我想通過使用Singleton傳遞一個對象,但是當我在新的ViewController中打印它時,它給了我(null)。當我在Viewcontroller1中NSLog optionsSingle時,它打印出對象。Singleton Return(null)
Viewcontroller1.h
@interface PrivateViewController : UIViewController<UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate>
{
rowNumber *optionsSingle;
}
Viewcontroller1.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
optionsSingle = [rowNumber singleObj];
optionsSingle = [devices objectAtIndex:indexPath.row];
}
Viewcontroller2.h
@interface SelectVideo : UITableViewController<NSFetchedResultsControllerDelegate>
{
rowNumber *optionsSingle;
}
Viewcontroller2.m
- (void)viewDidLoad
{
[super viewDidLoad];
optionsSingle=[rowNumber singleObj];
NSLog(@"%@", [NSString stringWithFormat:@"%@", optionsSingle.selectedRowNow]);
}
row.h
@interface rowNumber : NSObject
{
NSMutableArray *selectedRowNow;
}
@property (nonatomic) NSMutableArray *selectedRowNow;
+(rowNumber *)singleObj;
@end
row.m
@implementation rowNumber
{
rowNumber *anotherSingle;
}
@synthesize selectedRowNow;
+(rowNumber *)singleObj
{
static rowNumber * single=nil;
@synchronized(self) {
if(!single) {
single = [[rowNumber alloc] init];
}
}
return single;
}
@end
按照慣例,類名以大寫字母開頭。在可能的情況下,類的文件名與類名相同。這可以防止混淆,並讓其他人更容易理解其他代碼。 – zaph
我懷疑這個單身人士的使用是有保證的。基本上單身人士應該非常謹慎地使用,不僅僅是爲了在對象之間傳遞一個值。 – zaph