質問編集履歴

1

具体的な内容

2016/04/18 04:05

投稿

Mesh
Mesh

スコア14

test CHANGED
File without changes
test CHANGED
@@ -35,3 +35,119 @@
35
35
  hogeが勝手に開放されないか不安です。
36
36
 
37
37
  また外部クラスからhogeをアクセスすることはないようなので、プロパティにするのもおかしいのかなと思っていますがどうなのでしょうか?
38
+
39
+
40
+
41
+ 追記:
42
+
43
+ 具体的なソース(GDataXMLNode)を追記します。
44
+
45
+ hogeに当たるのがcachedName_で、ヘッダーファイル内で宣言されています。
46
+
47
+
48
+
49
+ ```Objective-c
50
+
51
+ - (NSString *)qualifiedName {
52
+
53
+ // internal utility
54
+
55
+
56
+
57
+ NSString *str = nil;
58
+
59
+
60
+
61
+ if (xmlNode_ != NULL) {
62
+
63
+ if (xmlNode_->type == XML_NAMESPACE_DECL) {
64
+
65
+
66
+
67
+ // name of a namespace node
68
+
69
+ xmlNsPtr nsNode = (xmlNsPtr)xmlNode_;
70
+
71
+
72
+
73
+ // null is the default namespace; one is the loneliest number
74
+
75
+ if (nsNode->prefix == NULL) {
76
+
77
+ str = @"";
78
+
79
+ }
80
+
81
+ else {
82
+
83
+ str = [self stringFromXMLString:(nsNode->prefix)];
84
+
85
+ }
86
+
87
+
88
+
89
+ } else if (xmlNode_->ns != NULL && xmlNode_->ns->prefix != NULL) {
90
+
91
+
92
+
93
+ // name of a non-namespace node
94
+
95
+
96
+
97
+ // has a prefix
98
+
99
+ char *qname;
100
+
101
+ if (asprintf(&qname, "%s:%s", (const char *)xmlNode_->ns->prefix,
102
+
103
+ xmlNode_->name) != -1) {
104
+
105
+ str = [self stringFromXMLString:(const xmlChar *)qname];
106
+
107
+ free(qname);
108
+
109
+ }
110
+
111
+ } else {
112
+
113
+ // lacks a prefix
114
+
115
+ str = [self stringFromXMLString:(xmlNode_->name)];
116
+
117
+ }
118
+
119
+ }
120
+
121
+
122
+
123
+ return str;
124
+
125
+ }
126
+
127
+
128
+
129
+ - (NSString *)name {
130
+
131
+
132
+
133
+ if (cachedName_ != nil) {
134
+
135
+ return cachedName_;
136
+
137
+ }
138
+
139
+
140
+
141
+ NSString *str = [self qualifiedName];
142
+
143
+
144
+
145
+ cachedName_ = str;
146
+
147
+
148
+
149
+ return str;
150
+
151
+ }
152
+
153
+ ```