teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

具体的な内容

2016/04/18 04:05

投稿

Mesh
Mesh

スコア14

title CHANGED
File without changes
body CHANGED
@@ -16,4 +16,62 @@
16
16
 
17
17
  ```
18
18
  hogeが勝手に開放されないか不安です。
19
- また外部クラスからhogeをアクセスすることはないようなので、プロパティにするのもおかしいのかなと思っていますがどうなのでしょうか?
19
+ また外部クラスからhogeをアクセスすることはないようなので、プロパティにするのもおかしいのかなと思っていますがどうなのでしょうか?
20
+
21
+ 追記:
22
+ 具体的なソース(GDataXMLNode)を追記します。
23
+ hogeに当たるのがcachedName_で、ヘッダーファイル内で宣言されています。
24
+
25
+ ```Objective-c
26
+ - (NSString *)qualifiedName {
27
+ // internal utility
28
+
29
+ NSString *str = nil;
30
+
31
+ if (xmlNode_ != NULL) {
32
+ if (xmlNode_->type == XML_NAMESPACE_DECL) {
33
+
34
+ // name of a namespace node
35
+ xmlNsPtr nsNode = (xmlNsPtr)xmlNode_;
36
+
37
+ // null is the default namespace; one is the loneliest number
38
+ if (nsNode->prefix == NULL) {
39
+ str = @"";
40
+ }
41
+ else {
42
+ str = [self stringFromXMLString:(nsNode->prefix)];
43
+ }
44
+
45
+ } else if (xmlNode_->ns != NULL && xmlNode_->ns->prefix != NULL) {
46
+
47
+ // name of a non-namespace node
48
+
49
+ // has a prefix
50
+ char *qname;
51
+ if (asprintf(&qname, "%s:%s", (const char *)xmlNode_->ns->prefix,
52
+ xmlNode_->name) != -1) {
53
+ str = [self stringFromXMLString:(const xmlChar *)qname];
54
+ free(qname);
55
+ }
56
+ } else {
57
+ // lacks a prefix
58
+ str = [self stringFromXMLString:(xmlNode_->name)];
59
+ }
60
+ }
61
+
62
+ return str;
63
+ }
64
+
65
+ - (NSString *)name {
66
+
67
+ if (cachedName_ != nil) {
68
+ return cachedName_;
69
+ }
70
+
71
+ NSString *str = [self qualifiedName];
72
+
73
+ cachedName_ = str;
74
+
75
+ return str;
76
+ }
77
+ ```