[LLVMbugs] [Bug 20581] New: Declaring '+(instancetype) alloc __attribute__((unavailable(""))); ' forbids calling alloc on variables of Class type
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Thu Aug 7 15:30:32 PDT 2014
http://llvm.org/bugs/show_bug.cgi?id=20581
Bug ID: 20581
Summary: Declaring '+(instancetype) alloc
__attribute__((unavailable("")));' forbids calling
alloc on variables of Class type
Product: new-bugs
Version: unspecified
Hardware: Macintosh
OS: MacOS X
Status: NEW
Severity: normal
Priority: P
Component: new bugs
Assignee: unassignedbugs at nondot.org
Reporter: rsanchez.saez at gmail.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
I have an Objective-C singleton class for which I declare these:
@interface MySingleton : NSObject
+ (instancetype) sharedInstance;
+ (instancetype) alloc __attribute__((unavailable("call sharedInstance
instead")));
- (instancetype) init __attribute__((unavailable("call sharedInstance
instead")));
+ (instancetype) new __attribute__((unavailable("call sharedInstance
instead")));
@end
My implementation is as follows:
@implementation MySingleton
+ (instancetype)sharedInstance
{
static dispatch_once_t s_dispatchOnceToken;
static id s_sharedInstance = nil;
dispatch_once(&s_dispatchOnceToken, ^
{
s_sharedInstance = [[super alloc] initSharedInstance];
});
return s_sharedInstance;
}
- (instancetype)initSharedInstance
{
return [super init];
}
@end
All this works as expected.
However, I have a MySingleton instance method like this:
- (void)instanceMethod
{
Class unrelatedClass = [self getClassWithType:classType]; //classType
is a NSString. This method never returns the MySingleton class
id activity = [[unrelatedClass alloc] init];
}
which should compile fine, but the compiler wrongly says:
'alloc' is unavailable: call sharedInstance instead
This issue is present in both CLANG versions included on Xcode 6 Beta 5 and on
5.1.1.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140807/6b4be49d/attachment.html>
More information about the llvm-bugs
mailing list