property_getAttributes

const char *property_getAttributes(objc_property_t prop)が返すものをBNF記法で示してみよう。

<property attribtue> ::= T<type>,<attribute-list>V<property name>
<property name> ::= property name
<attribute-list> ::= [<attribute-list>]<attribute>,
<attribute> ::= <nonatomic>|<copy>|<retain>|<readonly>
<nonatomic> ::= N
<copy> ::= C
<retain> ::= &
<readonly> ::= R
<type> ::= <pointer-type><named-objc-class>|<scalar-type>
<pointer-type> ::= ^
<named-objc-class> ::= @"<class-name>"
<class-name> ::= class name
<scalar-type> ::=<id>|<short>|<他多数!!>
<id> ::= @
<short> ::= s
<他多数!!> ::= objc/runtime.hを見ろ!

って、そもそもBNF記法が分からなかったw
こういう時は、あれだ。実例で示そう。

@property (nonatomic, retain, readonly) NSObject *obj01;

だと

T@"NSObject",R,&,N,Vobj01

となります。

@property (copy) NSString *title;

だと

T@"NSString",C,Vtitle

です。

struct A {
    int a;
    char b;
};
@property (readonly) struct A *nanika;

だと

T^{A="a"i"b"c},R,Vnanika

だ。