簡單的幾個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];