Giter VIP home page Giter VIP logo

blogs's Introduction

blogs's People

Contributors

gph1991 avatar iimuy avatar leomobiledeveloper avatar xiky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blogs's Issues

自定义 module 的 framework build 后, 并不会包含 module 中的代码

自定义 module 的 framework build 后, 并不会包含 module 中的代码,
而是通过 search path 去原路径寻找的, 如果把 framework 项目的路径修改,
或者把framework 丢个别人都会报 Missing required module
module 之间应该应该都是相互引用的, 并不会直接编译到二进制文件中,
查了好久还没有查到解决办法

内推

2021校园招聘内推码:RZMRVMU

头条 & 抖音内推加我微信:jacgjamdw
公司邮箱:[email protected]

当然喜欢交朋友的也可以加哈~

深入理解arc中有个疑问想请教

关于strong和weak的理解:
NSObject * temp = [[NSObject alloc] init];
__strong NSObject * temp = [[NSObject alloc] init];
这样有什么区别呢?

arc中没有strong和weak能不能正常运行?

你好 , 请教一个Server端票据验证结果字段与首次订阅票据验证结果字段不一致问题???

首次订阅购买拿到app的上传票据携带password去验证结果如下:
( 完整的验证结果数据 , 沙箱环境 )

{
    "status": 0,
    "environment": "Sandbox",
    "receipt": {
        "receipt_type": "ProductionSandbox",
        "adam_id": 0,
        "app_item_id": 0,
        "bundle_id": "net.yqtrack.app",
        "application_version": "1",
        "download_id": 0,
        "version_external_identifier": 0,
        "receipt_creation_date": "2020-04-23 08:02:14 Etc/GMT",
        "receipt_creation_date_ms": "1587628934000",
        "receipt_creation_date_pst": "2020-04-23 01:02:14 America/Los_Angeles",
        "request_date": "2020-04-23 09:02:08 Etc/GMT",
        "request_date_ms": "1587632528932",
        "request_date_pst": "2020-04-23 02:02:08 America/Los_Angeles",
        "original_purchase_date": "2013-08-01 07:00:00 Etc/GMT",
        "original_purchase_date_ms": "1375340400000",
        "original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles",
        "original_application_version": "1.0",
        "in_app": [{
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000641262877",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-03-20 02:16:35 Etc/GMT",
                "purchase_date_ms": "1584670595000",
                "purchase_date_pst": "2020-03-19 19:16:35 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-03-20 02:26:35 Etc/GMT",
                "expires_date_ms": "1584671195000",
                "expires_date_pst": "2020-03-19 19:26:35 America/Los_Angeles",
                "web_order_line_item_id": "1000000051064583",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000649693801",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-09 03:16:10 Etc/GMT",
                "purchase_date_ms": "1586402170000",
                "purchase_date_pst": "2020-04-08 20:16:10 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-09 03:26:10 Etc/GMT",
                "expires_date_ms": "1586402770000",
                "expires_date_pst": "2020-04-08 20:26:10 America/Los_Angeles",
                "web_order_line_item_id": "1000000051064584",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000649695835",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-09 03:26:10 Etc/GMT",
                "purchase_date_ms": "1586402770000",
                "purchase_date_pst": "2020-04-08 20:26:10 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-09 03:36:10 Etc/GMT",
                "expires_date_ms": "1586403370000",
                "expires_date_pst": "2020-04-08 20:36:10 America/Los_Angeles",
                "web_order_line_item_id": "1000000051607039",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000649699311",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-09 03:36:10 Etc/GMT",
                "purchase_date_ms": "1586403370000",
                "purchase_date_pst": "2020-04-08 20:36:10 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-09 03:46:10 Etc/GMT",
                "expires_date_ms": "1586403970000",
                "expires_date_pst": "2020-04-08 20:46:10 America/Los_Angeles",
                "web_order_line_item_id": "1000000051607179",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000649702926",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-09 03:46:10 Etc/GMT",
                "purchase_date_ms": "1586403970000",
                "purchase_date_pst": "2020-04-08 20:46:10 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-09 03:56:10 Etc/GMT",
                "expires_date_ms": "1586404570000",
                "expires_date_pst": "2020-04-08 20:56:10 America/Los_Angeles",
                "web_order_line_item_id": "1000000051607329",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000649706093",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-09 03:56:10 Etc/GMT",
                "purchase_date_ms": "1586404570000",
                "purchase_date_pst": "2020-04-08 20:56:10 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-09 04:06:10 Etc/GMT",
                "expires_date_ms": "1586405170000",
                "expires_date_pst": "2020-04-08 21:06:10 America/Los_Angeles",
                "web_order_line_item_id": "1000000051607501",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000649709450",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-09 04:06:10 Etc/GMT",
                "purchase_date_ms": "1586405170000",
                "purchase_date_pst": "2020-04-08 21:06:10 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-09 04:16:10 Etc/GMT",
                "expires_date_ms": "1586405770000",
                "expires_date_pst": "2020-04-08 21:16:10 America/Los_Angeles",
                "web_order_line_item_id": "1000000051607642",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000651054139",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-13 06:36:41 Etc/GMT",
                "purchase_date_ms": "1586759801000",
                "purchase_date_pst": "2020-04-12 23:36:41 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-13 06:46:41 Etc/GMT",
                "expires_date_ms": "1586760401000",
                "expires_date_pst": "2020-04-12 23:46:41 America/Los_Angeles",
                "web_order_line_item_id": "1000000051607812",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000651060572",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-13 06:47:09 Etc/GMT",
                "purchase_date_ms": "1586760429000",
                "purchase_date_pst": "2020-04-12 23:47:09 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-13 06:57:09 Etc/GMT",
                "expires_date_ms": "1586761029000",
                "expires_date_pst": "2020-04-12 23:57:09 America/Los_Angeles",
                "web_order_line_item_id": "1000000051689255",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000651066307",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-13 06:57:12 Etc/GMT",
                "purchase_date_ms": "1586761032000",
                "purchase_date_pst": "2020-04-12 23:57:12 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-13 07:07:12 Etc/GMT",
                "expires_date_ms": "1586761632000",
                "expires_date_pst": "2020-04-13 00:07:12 America/Los_Angeles",
                "web_order_line_item_id": "1000000051689510",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000651071166",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-13 07:07:12 Etc/GMT",
                "purchase_date_ms": "1586761632000",
                "purchase_date_pst": "2020-04-13 00:07:12 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-13 07:17:12 Etc/GMT",
                "expires_date_ms": "1586762232000",
                "expires_date_pst": "2020-04-13 00:17:12 America/Los_Angeles",
                "web_order_line_item_id": "1000000051689756",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000651077696",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-13 07:21:37 Etc/GMT",
                "purchase_date_ms": "1586762497000",
                "purchase_date_pst": "2020-04-13 00:21:37 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-13 07:31:37 Etc/GMT",
                "expires_date_ms": "1586763097000",
                "expires_date_pst": "2020-04-13 00:31:37 America/Los_Angeles",
                "web_order_line_item_id": "1000000051689999",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000651083556",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-13 07:32:45 Etc/GMT",
                "purchase_date_ms": "1586763165000",
                "purchase_date_pst": "2020-04-13 00:32:45 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-13 07:42:45 Etc/GMT",
                "expires_date_ms": "1586763765000",
                "expires_date_pst": "2020-04-13 00:42:45 America/Los_Angeles",
                "web_order_line_item_id": "1000000051690368",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            },
            {
                "quantity": "1",
                "product_id": "test_sub_auto_renew",
                "transaction_id": "1000000655573401",
                "original_transaction_id": "1000000641262877",
                "purchase_date": "2020-04-23 08:02:13 Etc/GMT",
                "purchase_date_ms": "1587628933000",
                "purchase_date_pst": "2020-04-23 01:02:13 America/Los_Angeles",
                "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
                "original_purchase_date_ms": "1584670597000",
                "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
                "expires_date": "2020-04-23 08:12:13 Etc/GMT",
                "expires_date_ms": "1587629533000",
                "expires_date_pst": "2020-04-23 01:12:13 America/Los_Angeles",
                "web_order_line_item_id": "1000000051690672",
                "is_trial_period": "false",
                "is_in_intro_offer_period": "false"
            }
        ]
    },
    "latest_receipt_info": [{
        "quantity": "1",
        "product_id": "test_sub_auto_renew",
        "transaction_id": "1000000655600687",
        "original_transaction_id": "1000000641262877",
        "purchase_date": "2020-04-23 08:52:13 Etc/GMT",
        "purchase_date_ms": "1587631933000",
        "purchase_date_pst": "2020-04-23 01:52:13 America/Los_Angeles",
        "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
        "original_purchase_date_ms": "1584670597000",
        "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
        "expires_date": "2020-04-23 09:02:13 Etc/GMT",
        "expires_date_ms": "1587632533000",
        "expires_date_pst": "2020-04-23 02:02:13 America/Los_Angeles",
        "web_order_line_item_id": "1000000051965329",
        "is_trial_period": "false",
        "is_in_intro_offer_period": "false",
        "subscription_group_identifier": "20425005"
    }],
    "latest_receipt": "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",
    "pending_renewal_info": [{
        "auto_renew_product_id": "test_sub_auto_renew",
        "original_transaction_id": "1000000641262877",
        "product_id": "test_sub_auto_renew",
        "auto_renew_status": "0"
    }]
}

Server续订操作 , 使用首次订阅购买的app上传的票据( 存储在db ) , 拿出来再去24h前定期检查是否续订 , 然后验证结果显示为 :

{
    "auto_renew_status": 1,
    "status": 0,
    "auto_renew_product_id": "test_sub_auto_renew",
    "receipt": {
        "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
        "quantity": "1",
        "unique_vendor_identifier": "7ABC2762-B9CC-4B2E-8BDB-AA50185E26DC",
        "bvrs": "1",
        "expires_date_formatted": "2020-04-23 08:12:13 Etc/GMT",
        "is_in_intro_offer_period": "false",
        "purchase_date_ms": "1587628933000",
        "expires_date_formatted_pst": "2020-04-23 01:12:13 America/Los_Angeles",
        "is_trial_period": "false",
        "item_id": "1429441183",
        "unique_identifier": "00008020-0015118C1EDA002E",
        "original_transaction_id": "1000000641262877",
        "subscription_group_identifier": "20425005",
        "transaction_id": "1000000655573401",
        "web_order_line_item_id": "1000000051690672",
        "version_external_identifier": "0",
        "purchase_date": "2020-04-23 08:02:13 Etc/GMT",
        "product_id": "test_sub_auto_renew",
        "expires_date": "1587629533000",
        "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
        "purchase_date_pst": "2020-04-23 01:02:13 America/Los_Angeles",
        "bid": "net.yqtrack.app",
        "original_purchase_date_ms": "1584670597000"
    },
    "latest_receipt_info": {
        "original_purchase_date_pst": "2020-03-19 19:16:37 America/Los_Angeles",
        "quantity": "1",
        "unique_vendor_identifier": "F1976DFF-3B56-4980-AC16-F01BD8D87D9D",
        "bvrs": "1",
        "expires_date_formatted": "2020-04-23 09:02:13 Etc/GMT",
        "is_in_intro_offer_period": "false",
        "purchase_date_ms": "1587631933000",
        "expires_date_formatted_pst": "2020-04-23 02:02:13 America/Los_Angeles",
        "is_trial_period": "false",
        "item_id": "1429441183",
        "unique_identifier": "00008020-0015118C1EDA002E",
        "original_transaction_id": "1000000641262877",
        "subscription_group_identifier": "20425005",
        "transaction_id": "1000000655600687",
        "bid": "net.yqtrack.app",
        "web_order_line_item_id": "1000000051965329",
        "purchase_date": "2020-04-23 08:52:13 Etc/GMT",
        "product_id": "test_sub_auto_renew",
        "expires_date": "1587632533000",
        "original_purchase_date": "2020-03-20 02:16:37 Etc/GMT",
        "purchase_date_pst": "2020-04-23 01:52:13 America/Los_Angeles",
        "original_purchase_date_ms": "1584670597000"
    },
    "latest_receipt": "ewoJInNpZ25hdHVyZSIgPSAiQTU1bGJJVXBSejR4bHV1dExsdkxaT3BodjNrZ0NBVFlRT0VmNnJKTjMvREQ1ek1CNXRoSGM0djdIRXZLVnZRenBVL2dRRUEydDBqYnZaVEFTSENoMzFvSVJjakU3RHBVQlpXV3RueFoxUGhoY09LRUd4Q0ZZVDlnQnZmRS90NVhDelRWZFJ0M0JmdVBtMzNxYW1rWlY1MkZmOFBpVFFVdnp6WHFpTGQ4ejVXengySDlvV3kzSHVoQzZBVVlBQk1MQ2NaN0hzZlE4NUduYmZEaEJEbk02THVpdXBLMytQSHY0UmJ3cGdCdXdQa3QrL0dJbXhGaGlFUGpmWlBtVHJWc2xJa1VjQ2p3eEJEMmJicHFjYmlvc29CdzgxNG9QUEh2SnVaQjE0dytqVnlrWlJ5dWExeHhVcnFxTjh5REl1d1ZVQ2FaQmJQOW1JT0dVZzhXbDR5SU40a0FBQVdBTUlJRmZEQ0NCR1NnQXdJQkFnSUlEdXRYaCtlZUNZMHdEUVlKS29aSWh2Y05BUUVGQlFBd2daWXhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Td3dLZ1lEVlFRTERDTkJjSEJzWlNCWGIzSnNaSGRwWkdVZ1JHVjJaV3h2Y0dWeUlGSmxiR0YwYVc5dWN6RkVNRUlHQTFVRUF3dzdRWEJ3YkdVZ1YyOXliR1IzYVdSbElFUmxkbVZzYjNCbGNpQlNaV3hoZEdsdmJuTWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrd0hoY05NVFV4TVRFek1ESXhOVEE1V2hjTk1qTXdNakEzTWpFME9EUTNXakNCaVRFM01EVUdBMVVFQXd3dVRXRmpJRUZ3Y0NCVGRHOXlaU0JoYm1RZ2FWUjFibVZ6SUZOMGIzSmxJRkpsWTJWcGNIUWdVMmxuYm1sdVp6RXNNQ29HQTFVRUN3d2pRWEJ3YkdVZ1YyOXliR1IzYVdSbElFUmxkbVZzYjNCbGNpQlNaV3hoZEdsdmJuTXhFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcGMrQi9TV2lnVnZXaCswajJqTWNqdUlqd0tYRUpzczl4cC9zU2cxVmh2K2tBdGVYeWpsVWJYMS9zbFFZbmNRc1VuR09aSHVDem9tNlNkWUk1YlNJY2M4L1cwWXV4c1FkdUFPcFdLSUVQaUY0MWR1MzBJNFNqWU5NV3lwb041UEM4cjBleE5LaERFcFlVcXNTNCszZEg1Z1ZrRFV0d3N3U3lvMUlnZmRZZUZScjZJd3hOaDlLQmd4SFZQTTNrTGl5a29sOVg2U0ZTdUhBbk9DNnBMdUNsMlAwSzVQQi9UNXZ5c0gxUEttUFVockFKUXAyRHQ3K21mNy93bXYxVzE2c2MxRkpDRmFKekVPUXpJNkJBdENnbDdaY3NhRnBhWWVRRUdnbUpqbTRIUkJ6c0FwZHhYUFEzM1k3MkMzWmlCN2o3QWZQNG83UTAvb21WWUh2NGdOSkl3SURBUUFCbzRJQjF6Q0NBZE13UHdZSUt3WUJCUVVIQVFFRU16QXhNQzhHQ0NzR0FRVUZCekFCaGlOb2RIUndPaTh2YjJOemNDNWhjSEJzWlM1amIyMHZiMk56Y0RBekxYZDNaSEl3TkRBZEJnTlZIUTRFRmdRVWthU2MvTVIydDUrZ2l2Uk45WTgyWGUwckJJVXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCU0lKeGNKcWJZWVlJdnM2N3IyUjFuRlVsU2p0ekNDQVI0R0ExVWRJQVNDQVJVd2dnRVJNSUlCRFFZS0tvWklodmRqWkFVR0FUQ0IvakNCd3dZSUt3WUJCUVVIQWdJd2diWU1nYk5TWld4cFlXNWpaU0J2YmlCMGFHbHpJR05sY25ScFptbGpZWFJsSUdKNUlHRnVlU0J3WVhKMGVTQmhjM04xYldWeklHRmpZMlZ3ZEdGdVkyVWdiMllnZEdobElIUm9aVzRnWVhCd2JHbGpZV0pzWlNCemRHRnVaR0Z5WkNCMFpYSnRjeUJoYm1RZ1kyOXVaR2wwYVc5dWN5QnZaaUIxYzJVc0lHTmxjblJwWm1sallYUmxJSEJ2YkdsamVTQmhibVFnWTJWeWRHbG1hV05oZEdsdmJpQndjbUZqZEdsalpTQnpkR0YwWlcxbGJuUnpMakEyQmdnckJnRUZCUWNDQVJZcWFIUjBjRG92TDNkM2R5NWhjSEJzWlM1amIyMHZZMlZ5ZEdsbWFXTmhkR1ZoZFhSb2IzSnBkSGt2TUE0R0ExVWREd0VCL3dRRUF3SUhnREFRQmdvcWhraUc5Mk5rQmdzQkJBSUZBREFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBRGFZYjB5NDk0MXNyQjI1Q2xtelQ2SXhETUlKZjRGelJqYjY5RDcwYS9DV1MyNHlGdzRCWjMrUGkxeTRGRkt3TjI3YTQvdncxTG56THJSZHJqbjhmNUhlNXNXZVZ0Qk5lcGhtR2R2aGFJSlhuWTR3UGMvem83Y1lmcnBuNFpVaGNvT0FvT3NBUU55MjVvQVE1SDNPNXlBWDk4dDUvR2lvcWJpc0IvS0FnWE5ucmZTZW1NL2oxbU9DK1JOdXhUR2Y4YmdwUHllSUdxTktYODZlT2ExR2lXb1IxWmRFV0JHTGp3Vi8xQ0tuUGFObVNBTW5CakxQNGpRQmt1bGhnd0h5dmozWEthYmxiS3RZZGFHNllRdlZNcHpjWm04dzdISG9aUS9PamJiOUlZQVlNTnBJcjdONFl0UkhhTFNQUWp2eWdhWndYRzU2QWV6bEhSVEJoTDhjVHFBPT0iOwoJInB1cmNoYXNlLWluZm8iID0gImV3b0pJbTl5YVdkcGJtRnNMWEIxY21Ob1lYTmxMV1JoZEdVdGNITjBJaUE5SUNJeU1ESXdMVEF6TFRFNUlERTVPakUyT2pNM0lFRnRaWEpwWTJFdlRHOXpYMEZ1WjJWc1pYTWlPd29KSW5GMVlXNTBhWFI1SWlBOUlDSXhJanNLQ1NKemRXSnpZM0pwY0hScGIyNHRaM0p2ZFhBdGFXUmxiblJwWm1sbGNpSWdQU0FpTWpBME1qVXdNRFVpT3dvSkluVnVhWEYxWlMxMlpXNWtiM0l0YVdSbGJuUnBabWxsY2lJZ1BTQWlSakU1TnpaRVJrWXRNMEkxTmkwME9UZ3dMVUZETVRZdFJqQXhRa1E0UkRnM1JEbEVJanNLQ1NKdmNtbG5hVzVoYkMxd2RYSmphR0Z6WlMxa1lYUmxMVzF6SWlBOUlDSXhOVGcwTmpjd05UazNNREF3SWpzS0NTSmxlSEJwY21WekxXUmhkR1V0Wm05eWJXRjBkR1ZrSWlBOUlDSXlNREl3TFRBMExUSXpJREE1T2pBeU9qRXpJRVYwWXk5SFRWUWlPd29KSW1sekxXbHVMV2x1ZEhKdkxXOW1abVZ5TFhCbGNtbHZaQ0lnUFNBaVptRnNjMlVpT3dvSkluQjFjbU5vWVhObExXUmhkR1V0YlhNaUlEMGdJakUxT0RjMk16RTVNek13TURBaU93b0pJbVY0Y0dseVpYTXRaR0YwWlMxbWIzSnRZWFIwWldRdGNITjBJaUE5SUNJeU1ESXdMVEEwTFRJeklEQXlPakF5T2pFeklFRnRaWEpwWTJFdlRHOXpYMEZ1WjJWc1pYTWlPd29KSW1sekxYUnlhV0ZzTFhCbGNtbHZaQ0lnUFNBaVptRnNjMlVpT3dvSkltbDBaVzB0YVdRaUlEMGdJakUwTWprME5ERXhPRE1pT3dvSkluVnVhWEYxWlMxcFpHVnVkR2xtYVdWeUlpQTlJQ0l3TURBd09EQXlNQzB3TURFMU1URTRRekZGUkVFd01ESkZJanNLQ1NKdmNtbG5hVzVoYkMxMGNtRnVjMkZqZEdsdmJpMXBaQ0lnUFNBaU1UQXdNREF3TURZME1USTJNamczTnlJN0Nna2laWGh3YVhKbGN5MWtZWFJsSWlBOUlDSXhOVGczTmpNeU5UTXpNREF3SWpzS0NTSjBjbUZ1YzJGamRHbHZiaTFwWkNJZ1BTQWlNVEF3TURBd01EWTFOVFl3TURZNE55STdDZ2tpWW5aeWN5SWdQU0FpTVNJN0Nna2lkMlZpTFc5eVpHVnlMV3hwYm1VdGFYUmxiUzFwWkNJZ1BTQWlNVEF3TURBd01EQTFNVGsyTlRNeU9TSTdDZ2tpWW1sa0lpQTlJQ0p1WlhRdWVYRjBjbUZqYXk1aGNIQWlPd29KSW5CeWIyUjFZM1F0YVdRaUlEMGdJblJsYzNSZmMzVmlYMkYxZEc5ZmNtVnVaWGNpT3dvSkluQjFjbU5vWVhObExXUmhkR1VpSUQwZ0lqSXdNakF0TURRdE1qTWdNRGc2TlRJNk1UTWdSWFJqTDBkTlZDSTdDZ2tpY0hWeVkyaGhjMlV0WkdGMFpTMXdjM1FpSUQwZ0lqSXdNakF0TURRdE1qTWdNREU2TlRJNk1UTWdRVzFsY21sallTOU1iM05mUVc1blpXeGxjeUk3Q2draWIzSnBaMmx1WVd3dGNIVnlZMmhoYzJVdFpHRjBaU0lnUFNBaU1qQXlNQzB3TXkweU1DQXdNam94Tmpvek55QkZkR012UjAxVUlqc0tmUT09IjsKCSJlbnZpcm9ubWVudCIgPSAiU2FuZGJveCI7CgkicG9kIiA9ICIxMDAiOwoJInNpZ25pbmctc3RhdHVzIiA9ICIwIjsKfQ=="
}

第二次字段响应不符合官方文档的说明啊???请问这是什么情况???
还有我看了您的记录 , 说是Server用最后一次票据去轮询验证 , 最后一次票据具体是指???

UIResponder+QTEventBus

  • (QTEventBus *)eventDispatcher{
    UIResponder * resp = self;
    do {
    if ([resp isDispatcherProvider]) {
    return resp.qt_privateBus;
    }
    resp = resp.nextResponder;
    } while (resp != nil);
    return nil;
    }
    这样实现,如果VC view的子view也设置为dispatcherProvider VC中的事件就不能回调了

一点小疑惑

有一点小疑惑,请教一下,我对这里使用双向链表有点小疑问,既然已经有字典可以用来保存双向链表中某个节点的位置,那为什么不直接用字典来保存这个订阅者呢?而只是保存订阅者的位置,然后再通过位置来操作双向链表,直接用字典不是更方便吗?时间复杂度也是一样的。

关于 objc_msgSend 请教

objc 代码 编译生成 objc_msgSend 函数, 那应该是在 编译过程中产生的吧,具体是哪一步?; runtime 是不是就是个 动态库;objc_msgSend 就是runtime动态库里的方法, 最后会链接,装载成 执行文件吗?

望指教.

文章勘误

博主的文章写的很好,仔细阅读时发现一出语句问题:
《优雅的开发TableView》中:
“继承是一个实现代码复用的解决方案,通过在基类中实现-子类重写的方式进行服复用。”
结尾应该是多了一个“服”。

不算是一个问题,阅读时发现,顺手提一下~

你好,请教个内购问题

未绑定App Store支付方式的用户,在购买内购商品时,首先会弹出一个设置支付方式的弹框,用户点击了继续,updatedTransactions会回调一个是失败的交易,也就是SKPaymentTransactionStateFailed,此时APP 调用了finishTransaction,结束了当前交易,而用户跳转到App Store绑定支付方式之后,接着付款成功了。此时APP还会调用updatedTransactions函数回调成功的交易吗?

Watch OS5 Beta踩坑记录

背景:需要升级Watch OS5 Beta版本来开发一些新功能,手机:iPhone 7,手表:iWatch 3
坑:

  • 手机连不上手表,连接的时候没反应
  • 手表安装了beta配置文件后,无法升级

解决办法:

  1. 手机升级到iOS 12 Beta,然后删除iOS 12 Beta Profile
  2. 尝试连接手表,这时候就能连上了
  3. 手表安装Watch OS 5 Beta Profile
  4. 手机安装上iOS 12 Beta Profile
  5. 尝试更新Watch OS 5成功

小结:手机必须先删除iOS 12 Beta Profile才能连接到表;必须安装上iOS 12 Beta Profile才能更新Watch OS

Symbol地址不连续疑问🤔️

大佬你好我是一名大三的 iOS 懵新,今天看你博客中 iOS 编译过程的原理和应用 对 Symbol 中的这段代码有个疑问

# Symbols:
  地址     大小          文件编号    方法名
# Address	Size    	File       Name
0x1000021B0	0x00000109	[  2]     -[ULWBigResponseButton pointInside:withEvent:]
0x1000022C0	0x00000080	[  3]     -[ULWCategoryController liveAPI]
0x100002340	0x00000080	[  3]     -[ULWCategoryController categories]
....

0x1000021B0 加上 size 0x00000109 末地址为 0x1000022B9 但是下一个地址的起始并不是 0x1000022BA 所以可以知道这个地方的地址并不连续,我猜想这个地方的不连续是不是跟文件编号有关,是不是文件编号相同的地址就是连续的,我理解这样是因为编号相同就是在同一个文件当中,那么这个当中的方法可以连续在一起编译,而不同文件中的方法即文件编号不同则需要放在不连续的内存中,相当于划分了一个块?再猜想的话会不会是针对每一个文件有固定的这样位置的大小,然后用不完的话就放在那里然后跳过使用下一个文件专属的块?

深入理解ARC.md 这章不准确的地方

关于深入理解ARC.md 这章的理解其中关于autoreleasepool有一点是不对的吧
__weak NSObject * obj;
@autoreleasepool {
NSObject * temp = [[NSObject alloc] init];
obj = temp;
}
这段代码是不会加入pool的,通过alloc创建的自己会管理不会放入pool。释放是因为超过作用域自然会释放局部变量。
可以这么写NSObject * temp = [NSObject creatObj];在MRC下是肯定加入pool,但是在ARC下这块通过tls存储进行了优化省去了发送autorelease和retain操作,并不一定加入pool。

求教

方便开源一个MVVM的OC框架么

避免swift库对外暴露

在framework库里混编的时候,oc调用swift,swift必须是public,这样swift就可以被外界访问了。有没有办法避免对外暴露。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.