簡體   English   中英

如何使用 NSObject 子類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM