<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## Pragma Mark `#pragma mark -` 是一個在類內部組織代碼并且幫助你分組方法實現的好辦法。 我們建議使用 `#pragma mark -` 來分離: - 不同功能組的方法 - protocols 的實現 - 對父類方法的重寫 ~~~ - (void)dealloc { /* ... */ } - (instancetype)init { /* ... */ } #pragma mark - View Lifecycle (View 的生命周期) - (void)viewDidLoad { /* ... */ } - (void)viewWillAppear:(BOOL)animated { /* ... */ } - (void)didReceiveMemoryWarning { /* ... */ } #pragma mark - Custom Accessors (自定義訪問器) - (void)setCustomProperty:(id)value { /* ... */ } - (id)customProperty { /* ... */ } #pragma mark - IBActions - (IBAction)submitData:(id)sender { /* ... */ } #pragma mark - Public - (void)publicMethod { /* ... */ } #pragma mark - Private - (void)zoc_privateMethod { /* ... */ } #pragma mark - UITableViewDataSource - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { /* ... */ } #pragma mark - ZOCSuperclass // ... 重載來自 ZOCSuperclass 的方法 #pragma mark - NSObject - (NSString *)description { /* ... */ } ~~~ 上面的標記能明顯分離和組織代碼。你還可以用 cmd+Click 來快速跳轉到符號定義地方。但是小心,即使 paragma mark 是一門手藝,但是它不是讓你類里面方法數量增加的一個理由:類里面有太多方法說明類做了太多事情,需要考慮重構了。 ## 關于 pragma 在 [http://raptureinvenice.com/pragmas-arent-just-for-marks](http://raptureinvenice.com/pragmas-arent-just-for-marks) 有很好的關于 pragma 的討論了,在這邊我們再做部分說明。 大多數 iOS 開發者平時并沒有和很多編譯器選項打交道。一些選項是對控制嚴格檢查(或者不檢查)你的代碼或者錯誤的。有時候,你想要用 pragma 直接產生一個異常,臨時打斷編譯器的行為。 當你使用ARC的時候,編譯器幫你插入了內存管理相關的調用。但是這樣可能產生一些煩人的事情。比如你使用 `NSSelectorFromString` 來動態地產生一個 selector 調用的時候,ARC不知道這個方法是哪個并且不知道應該用那種內存管理方法,你會被提示 `performSelector may cause a leak because its selector is unknown(執行 selector 可能導致泄漏,因為這個 selector 是未知的)`. 如果你知道你的代碼不會導致內存泄露,你可以通過加入這些代碼忽略這些警告 ~~~ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" [myObj performSelector:mySelector withObject:name]; #pragma clang diagnostic pop ~~~ 注意我們是如何在相關代碼上下文中用 pragma 停用 -Warc-performSelector-leaks 檢查的。這確保我們沒有全局禁用。如果全局禁用,可能會導致錯誤。 全部的選項可以在 [The Clang User's Manual](http://clang.llvm.org/docs/UsersManual.html) 找到并且學習。 ## 忽略沒用使用變量的編譯警告 這對表明你一個定義但是沒有使用的變量很有用。大多數情況下,你希望移除這些引用來(稍微地)提高性能,但是有時候你希望保留它們。為什么?或許它們以后有用,或者有些特性只是暫時移除。無論如何,一個消除這些警告的好方法是用相關語句進行注解,使用 `#pragma unused()`: ~~~ - (void)giveMeFive { NSString *foo; #pragma unused (foo) return 5; } ~~~ 現在你的代碼不用任何編譯警告了。注意你的 pragma 需要標記到未定義的變量之下。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看