OK,這是真的竊聽我,我相信解決辦法很簡單......我無法從其他類(SeverConnect.m),我已經宣佈,在我的ViewController的.H正常合成設置我的ViewController的屬性變量/.m文件:如何從另一個類訪問我的ViewController的屬性變量?
ServerConnect.h:
#import <Foundation/Foundation.h>
#import "ViewController.h"
#import "Contact.h"
@class ViewController;
@interface ServerConnect : NSObject
{
Contact *newContact;
NSString *codeRawContent;
NSMutableArray *contactListCopy;
... //Other variables declared here, but not shown in order to save space
內ServerConnect.m:
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"parserDidFinish");
newContact = [[Contact alloc] initWithCodeInfo:(NSString *)codeInfo
contactName:(NSString *)completeName
contactImage:(UIImage *)profileImage
contactWebSite:(NSString *)codeRawContent];
[contactListCopy insertObject:newContact atIndex:0];
[ViewController setContactList:contactListCopy]; //Automatic Reference Counting Error Occurs Here: "No known class method for selector 'setContactList:'"
}
正如我上面提到的,我已經宣佈和合成的屬性變量,「contactList」,在我的ViewController的.H/.m文件(沒有錯誤):
@property (nonatomic, retain) NSMutableArray *contactList; //In ViewController's .h file
@synthesize contactList; //In ViewController's .m file
有人能告訴我什麼,我做錯了?預先感謝您提供的任何幫助!
感謝埃德溫對快速響應的方式!我從我的AppDelegate創建視圖控制器類的實例時,應用程序首先加載( 「... didFinishLaunchingWithOptions ... 」): 的viewController = [[視圖控制器的alloc] initWithNibName:@「 ViewController_iPhone」 捆綁:無]。 通過創建另一個實例,我不會丟失保存在前一個viewController實例(即其他實例變量)中的所有數據嗎?我無法設置原先的viewController實例的contactList,這是我之前在AppDelegate中聲明的嗎? – JRoss
這只是一個例子。如果你已經有實例使用:[viewController setContactList:contactListCopy];如果您需要從ServerConnect.m訪問它,請將其設置爲應用程序委託的屬性並通過它訪問它:[appDelegate.viewController setContactList:contactListCopy]; –
@JRoss,讓該死的肯定,你從來不使用大寫字母在一個實例名稱的開頭(的viewController例如與視圖控制器類)。 – Till