Objective-C点语法或属性值?
发布时间:2020-12-16 10:16:08 所属栏目:百科 来源:网络整理
导读:我一直在阅读点语法是可能的,但我不断得到结构不包含我引用的成员的错误.也许它不是点语法,所以我已经包含了我正在做的细节,希望有一个解决方案: // MobRec.h - used as the objects in the MobInfo array#import Foundation/Foundation.h@interface MobRec
我一直在阅读点语法是可能的,但我不断得到结构不包含我引用的成员的错误.也许它不是点语法,所以我已经包含了我正在做的细节,希望有一个解决方案:
// MobRec.h - used as the objects in the MobInfo array #import <Foundation/Foundation.h> @interface MobRec : NSObject { @public NSString *mName; @public int mSpeed; } @property (nonatomic,retain) NSString *mName; @property (nonatomic) int mSpeed; // MobDefs.h - array of MobRecords @interface Mobdefs : NSObject { @public NSMutableArray *mobInfo; } @property(assign) NSMutableArray *mobInfo; // is this the right property? -(void) initMobTable; @end // MobDefs.m #import "Mobdefs.h" #import "Mobrec.h" @implementation Mobdefs @synthesize mobInfo; -(void) initMobTable { // if I use traditional method I get may not respond [mobInfo objectAtIndex:0 setmName: @"doug"]; // if I use dot syntax I get struct has no member named mName mobInfo[1].MName = @"eric"; } // main.h MobDefs *mobdef; // main.m mobdef = [[Mobdefs alloc] init]; [mobdef initMobTable]; 虽然这两种方法都可行,但我两者都有错误.我究竟做错了什么?我最好的想法是我使用了错误的@property,但我想我已经尝试了所有.我在main执行alloc.理想情况下,我想为此使用点语法,并且无法理解为什么它不允许它. 解决方法
一些事情:(编辑:原因点#1因错误而被删除)
>虽然支持点语法,但NSArray的数组索引语法不支持.因此,您对mobInfo [1]的调用与[mobInfo objectAtIndex:1]不同;相反,mobInfo将被视为一个简单的C风格数组,并且该调用几乎可以保证导致崩溃. 编辑:以下是它的外观:
@interface MobRec : NSObject { NSString *mName; int mSpeed; } @property (nonatomic,retain) NSString *mName; @property (nonatomic) int mSpeed;
@implementation MobRec @synthesize mName; @synthesize mSpeed; @end
@interface MobDefs : NSObject { NSMutableArray *mobInfo; } @property(assign) NSMutableArray *mobInfo; -(void) initMobTable; @end
#import "MobDefs.h" #import "MobRec.h" @implementation MobDefs @synthesize mobInfo; -(void) initMobTable { // option 1: [(MobRec*)[mobInfo objectAtIndex:0] setMName:@"doug"]; // option 2: (MobRec*)[mobInfo objectAtIndex:0].mName = @"eric"; // option 3: MobRec *mobRec = [mobInfo objectAtIndex:0]; mobRec.mName = @"eric"; }
MobDef *mobdef = [[MobDefs alloc] init]; [mobdef initMobTable]; ... [mobdef release]; // don't forget! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |