1. 程式人生 > >簡單的幾個OC知識點

簡單的幾個OC知識點

1.關於系統自定義設值取值方法的理解

oc在介面檔案裡面使用

@property int a;

在實現檔案裡面使用

@synthesize int a;

來實現系統自動的設值取值函式,個人對這兩句話暫時的理解是@property相當於將方法進行了宣告

2.關於oc中訪問方式

oc中的例項變數都是private,而方法都是public的,所以訪問例項變數(就是類中定義的變數然後例項化以後才能使用的變數)的時候需要自己寫設值取值函式。

3.本地推送訊息無許可權的問題

haven’t received permission from user
貌似是ios8改了以後的問題,可以在appDelegate.m檔案中加入如下程式碼
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
else {
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge];
}

4. 如何將tableView設定為多個section

比如一個數組{1,5,4,6,7,3} 按照相應的順序將大於5的放前面,小於等於5的放後面
預處理:
將陣列改裝成{{6,7},{1,5,4,3}},並將NSMutableArray* multitem[0]={6,7},NSMutableArray* multitem[1]={1,5,4,3};
然後

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 2;
}

-(NSInteger)tableView:(UITableView
*)tableView numberOfRowsInSection:(NSInteger)section{ // return [[[BNRItemStore sharedStore] allItems]count]; return [multitem[section] count]; } -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell* cell=[tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"
forIndexPath:indexPath]; // NSArray* items=[[BNRItemStore sharedStore] allItems]; BNRItem* item=multitem[indexPath.section][indexPath.row]; cell.textLabel.text=[item description]; return cell; }

5.weak指標是不能作為變數的擁有者的

所以不存在
(_weak) UIView* view=[UIView alloc]init];
這樣初始化為導致view無值,因為初始化了一個UIView,但是並沒有strong指標指向相應的記憶體位置,從而會導致無擁有著而釋放,從而view因為是弱指標且無指向從而釋放。

6.ios8之後系統使用CLLocation定位沒反應

這個需要進行一項配置,在plist中加入
NSLocationWhenInUseUsageDescription Boolean YES
然後在程式中呼叫

[self.locationManager requestWhenInUseAuthorization];
[self.locationManager startUpdatingLocation];

就可以在程式使用期間呼叫CLLocation框架進行定位了,如果需要始終定位,在plist中加入
NSLocationAlwaysUsageDescription Boolean YES
在程式中呼叫

[self.locationManager requestAlwaysAuthorization]
[self.locationManager startUpdatingLocation];