使用在类方法中作为参数创建的实例变量

时间:2013-12-05 05:59:49

标签: objective-c objective-c-blocks

很抱歉问一些基本的东西,但我无法弄清楚为什么我无法使用类方法中的参数。

这是我需要帮助的。 API.h

@class User;
@interface API : NSObject
@property (nonatomic,readonly,retain)NSString *StoreIdentifierForVendor;
+(NSURLSessionDataTask *)MethodForMakingTheRequestWithBlock:(void(^)(NSString *username, NSError *error))block;
@end

APILibrary.m

@implementation API
@synthesize StoreIdentifierForVendor;
+(NSURLSessionDataTask *)MethodForMakingTheRequestWithBlock:(void(^)(NSString * username, NSError *error))block
{
    id loginDict = @{"NickName": username}
}
@end

我遇到的问题是,我不明白为什么我会“使用未声明的标识符'用户名'错误。我试图设置为

@property(nonatomic,copy)NSString *username;

但是,我无法将其作为参数。为什么我不能在字典中使用用户名?

2 个答案:

答案 0 :(得分:0)

username变量已被声明为块的参数,因此只有当您尝试在具有此块作为参数的方法内访问它时才能在该块内使用。这就像尝试访问全局范围中的局部变量一样。那里不存在

答案 1 :(得分:0)

您正在将块传递给方法MethodForMakingTheRequestForBlock,并且该块采用类型为NSString *的参数。该参数碰巧被称为username,但这仅仅意味着块中的内容。