Time of Update: 2018-07-24
在Objective-C語言中,Apple在iOS中引入了兩個宏來重新定義枚舉類型(即:NS_ENUM與NS_OPTIONS),這兩者在本質上並沒有差別,都是用於定義枚舉類型,但是在使用NS_ENUM多用於一般枚舉,而NS_ENUMM多用於一般枚舉,而ES_OPTIONS則多用於帶有移位元運算的枚舉 NS_ENUM使用樣本 typedef NS_ENUM(NSUInteger, Type) { TypeNone = 0,
Time of Update: 2018-07-24
對類似於微博發布時間這種樣式的時間日期轉換,做了如下整理與總結,總得來說解決了這麼幾個關鍵性的問題: (1)對伺服器端返回的時間日期文字進行本地化設定(伺服器返回的可能不是中國地區的時間格式。如返回歐美時間格式。) (2)自訂時間日期格式,返回符合自訂格式的字串 (3)如何判定一個NSDate對象的是否為今年/今天/昨天(為NSDate提供一個分類,對三種判定分別提供兩種版本下的判斷。 iOS 所有版本均適用/ iOS 8 以後的版本適用) 相關代碼:
Time of Update: 2015-07-10
標籤:objective-c macos 管理員權限 在MacOS下可以使用AuthorizationExecuteWithPrivileges函數以管理員身份運行某個程式,凡是以管理員權限運行會彈出一個輸入密碼的框。 而被執行的這個程式如果再以管理員權理去執行另外一個程式,又會彈出一個框。這說明許可權是沒有繼承的。寫過Windows程式的人應該知道,
Time of Update: 2015-12-04
標籤:在iOS中需要精確計算時,double, float類型往往會出現不可預料的問題: 在調試過程中可以看到 doule 類型 d3 在計算過程中值不是預計的9999.99。 如果在要用中計算涉及到金額等重要資料,不建議使用這種不可控結果的方式,可以採用iOS提供的另外一種支援準確精度計算的資料類型
Time of Update: 2016-08-04
標籤:簡單的動物園系統實現#import <Foundation/Foundation.h>#import "Animal.h"//動物園@interface Zoo : NSObject@property (nonatomic, strong) Animal *animal;//動物@property (nonatomic, assign) int foodSave;//食物儲備/** * 初始化方法 傳入儲備的食物數量 */-
Time of Update: 2015-11-19
標籤:前面我們討論了Runtime中對類和對象的處理,及對成員變數與屬性的處理。這一章,我們就要開始討論Runtime中最有意思的一部分:訊息處理機制。我們將詳細討論訊息的發送及訊息的轉寄。不過在討論訊息之前,我們先來瞭解一下與方法相關的一些內容。基礎資料類型SELSEL又叫選取器,是表示一個方法的selector的指標,其定義如下:typedef struct objc_selector
Time of Update: 2015-11-12
標籤:// 地球只有一個,所以聲明一個地球對象就可以了,千萬不能聲明兩個啊!同理,有時候一個類也有只能有一個對象的情況,例如伺服器,只想存到一個裡 // 面,這樣子,下次才可以取出上次存的資料。 //用全域變數來實現單例模式//在此定義一個全域變數 地球,然後在單例方法中一直返回這個全域變數,那也可以實現單例模式Earth * global=nil; //在單例方法中一直返回這個全域變數,但第一次調用時要建立這個對象+(Earth *)defaultEarth{
Time of Update: 2015-10-13
標籤: 多態按字面的意思就是“多種狀態”。在物件導向語言中,介面的多種不同的實現方式即為多態。多態性是允許你將父物件設定成為和一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指標賦值給父類類型的指標。
Time of Update: 2015-09-22
標籤:block內部結構讓我們寫一個blockvoid exampleBlock() { // NSConcreteStackBlock int a = 1; __block int b = 2; int(^blockTest0)(int c) = ^(int c){ return a + b + c; }; int c = 3; blockTest0(c); // NSConcreteGlobalBlock
Time of Update: 2015-09-09
標籤:局部變數: returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...}; 屬性: @property (nonatomic, copy) returnType (^blockName)(parameterTypes); 訊息參數:
Time of Update: 2015-08-31
標籤:UIViewController是iOS程式中的一個重要組成部分,對應MVC設計模式的C,它管理著程式中的眾多視圖,何時載入視圖,視圖何時消,介面的旋轉等。1.UIViewController 建立與初始化 [1].通過nib檔案建立與初始化- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
Time of Update: 2015-08-19
標籤: 在Objective-c中有int的資料類型,那為什麼還要使用數字對象NSNumber?這是因為很多類(如NSArray)都要求使用對象,而int不是對象。NSNumber就是數字對象,我們可以使用NSNumber對象來建立和初始化不同類型的數字對象。#import <Foundation/Foundation.h>NSNumber
Time of Update: 2015-06-25
標籤:本系列主要參考資料:Objective-C Runtime ReferenceObjective-C Runtime Programming Guide涉及主要檔案:objc/message.h,objc/objc-api.h,objc/objc.h,objc/runtime.h特酷吧[tekuba.net]採用"署名-非商業用途-保持一致"的創作共用協議,使用本文內容請遵循該協議 Objective-C Runtime是Objective-C的基礎內容,理解了Objective-C
Time of Update: 2015-06-13
標籤:main.m 1 #import <Foundation/Foundation.h> 2 /** 3 * 測試指標型參數和普通參數的區別 4 * 5 * @param a 指標型參數 6 * @param b 普通參數 7 * 8 * @return (指標型參數+2) + (普通參數+2) 9 */10 int pointerTypeParameterTest(int *a, int b) {11 *a = *a + 2;
Time of Update: 2015-05-03
標籤:2007年的時候,Objective-C在TIOBE程式設計語言排名裡還排在可憐的第45位,而隨著移動互連網的迅速發展和iPhone,iPad等iOS裝置的廣闊市場前景,Objective-C也迅速崛起,走進了開發人員的視野。在最近的TIOBE排名中,Objective-C達到了驚人的第4名,可以說已經成為當今世界上一門非常重要的程式設計語言。而Objective-C現在主要是由Apple在負責維護了。一直以來Apple為了適應開發的發展需要,不斷在完善OC以及相應的cocoa庫,2.0中
Time of Update: 2018-12-05
首先輸入完成後按鍵盤上的done關閉鍵盤首先在Interface Builder中選擇TextFields,然後在Text Field Attributes中找到Text Input Traits,選擇Return Key為done。OK 定義方法- (IBAction) textFieldDoneEditing:(id)sender;//按下Done鍵關閉鍵盤實現方法//按完Done鍵以後關閉鍵盤- (IBAction)
Time of Update: 2018-12-05
最近在做程式中需要在Objective-C類中聲明一個C語言方式的一維數組:@interface CArrayTest : NSObject{@private BOOL testArray[4]; }@end聲明屬性如果是@property(nonatomic,assign)BOOL testArray[4];會提示錯誤:Property can not have array or function type BOLL[4]==============================
Time of Update: 2018-12-04
在Objective-C(.m)中使用C++(.cpp)或Objective-C++(.mm)時,編譯過程出現如下錯誤:expected '=', ',', ';', 'asm' or '__attribute__' before ***原因是C++或Objective-C++代碼被Objective-C代碼調用,或間接調用了(#import了#import其它.cpp或.mm檔案的.h檔案)。解決方案:1. 把調用或間接調用了.cpp或.mm的所有.m檔案改名為.mm檔案;2.
Time of Update: 2018-12-04
Apple在C,Objective-C和C++中擴充了Block這種文法的,並且在GCC4.2中進行了支援。現在我們可以在Mac 10.6和iOS 4中使用。如果是Mac 10.6 或 iOS 4.0 之前的平台,據說可以用http://code.google.com/p/plblocks/這個項目來支援Block文法。Apple在 Snow Leopard中所用到的Grand Central Dispatch(GCD)就是基於Blocks實現的。Grand Central
Time of Update: 2018-12-05
很多想開發IOS,或者正在開發IOS的程式員以前都做過Java或者C++,當第一次看到Objective-C的代碼時都會頭疼,Objective-C的代碼在文法上和Java,