[英]How to use NSObject subclass?
所以我創建了一個 NSObject 的子類,叫做Query
@interface Query : NSObject
@property (nonatomic, assign) NSNumber *weight;
@property (nonatomic, assign) NSNumber *bodyFat;
@property (nonatomic, assign) NSNumber *activityLevel;
@end
這對於設置對象的屬性是否正確?
在 VC1 中:
BodyFatViewController *aViewController = [[BodyFatViewController alloc]init];
aViewController.query = self.query;
[self.navigationController pushViewController:aViewController animated:YES];
在 VC2 中:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
Query *anQuery = [[Query alloc]init];
anQuery.bodyFat = [self.bodyFatArray objectAtIndex:row];
anQuery.weight = self.query.weight;
self.query = anQuery;
}
在兩個 VC 之間共享一個 object 是很自然的:
在 VC1 中:
@property (strong, nonatomic) Query *query;
@synthesize query=_query;
// init it
self.query = [[Query alloc] init];
self.query.weight = [NSNumber numberWithInt:150];
// when it's time to present VC2:
BodyFatViewController *aViewController = [[BodyFatViewController alloc]init];
aViewController.query = self.query;
[self.navigationController pushViewController:aViewController animated:YES];
然后在 VC2 中:
// this is in the public interface in VC2.h
//
@property (strong, nonatomic) Query *query;
不要在 VC2 中分配/初始化它。 VC1 做到了! 但是可以隨意設置或覆蓋值...
self.query.bodyFat = [NSNumber numberWithFloat:0.5];
不要創建新查詢,只需使用屬性:
self.query.bodyFat = [self.bodyFatArray objectAtIndex:row];
是的,這是正確的。
self.query = newQueryObject
要么
myBodyFatViewController.query = newQueryObject
兩者都有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.