Object-C  初心者な質問

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まる

Object-C  初心者な質問

#1

投稿記事 by まる » 15年前

初歩的な質問ですみません。
2点質問がございます。

I/F:iphone(Xcode)
言語:Object-C

1)デファインについて

#define MAX_NUM 30
#define FRIEND_TIMELINE_URL2 @"http://%@:%@@twitter.com/statuses/friends_timeline.json?count=MAX_NUM"

上記のようにツイッターAPIを使用してデータを取り出そうとしたのですが、
countオプションの値にデファインを使用しても無視されます。
数字をべたにいれると認識されます。
この原因についてわかるようでしたら、教えてください。

メンテナンスのことを考えて最大数はデファインで持ちたく。。。
よい回避策があればいいのですが。。

2)関数コールについて

さらに初心者的な質問ですが、
当方はC言語の知識しかないのですが、Object-Cでの関数コールの仕方について教えてください。
漠然とした質問ですみません。
このあたりがわかる参考になるサイトとかでも教えていただけると助かります。

Re:Object-C  初心者な質問

#2

投稿記事 by » 15年前

あくまで経験者レベルです。
時間がないのでざっくりと・・・

1について
宣言している部分は正しいですか?
又、C言語と組み合わせる場合は拡張子を変えなければいけないことがあるのですが拡張子は何になってます
か?
バックアップを取ってそのソースを.mmにしてみて下さい。

2について
[self 関数名];
これで関数を呼べるかと・・・。

めるぽん

Re:Object-C  初心者な質問

#3

投稿記事 by めるぽん » 15年前

define の置き換えはトークンと呼ばれる単位で置換していくのですけど、文字列リテラルというのは1つのトークンとして認識されるため、MAX_NUM が 30 に置換されることはありません。
少し回りくどいマクロを書けば文字列にすることも可能ですが、以下のような関数を使うようにしてもいいのではないでしょうか。
#define MAX_NUM 30
#define FRIEND_TIMELINE_URL2 @"http://%@:%@@twitter.com/statuses/friends_timeline.json?count=%d"

NSString* make_friend_timeline_url2(NSString* user, NSString* pass)
{
    return [NSString stringWithFormat: FRIEND_TIMELINE_URL2, user, pass, MAX_NUM];
}

Re:Object-C  初心者な質問

#4

投稿記事 by » 15年前

あ~ごめんなさい
よくソースを見てませんでした。

countオプションの値にデファインを使用しても無視されます。
と書いてあったのでってきり変数に値を入れているのかと・・・

Justy

Re:Object-C  初心者な質問

#5

投稿記事 by Justy » 15年前

 Objective-Cですね。


>2)関数コールについて
 関数は基本的に XXXXX(A, B, C)のように C言語と同じですよ。
 ex) NSLog(@"hoge");

まる

Re:Object-C  初心者な質問

#6

投稿記事 by まる » 15年前

みなさん回答ありがとうございます。

質問1に関しては理解いたしました。

質問2に関してですが、

下記例のソースで
Justyさんの回答を表すと、

- (IBAction)myAction1:(id)sender {

make_friend_timeline_url2(A,B);

}

蓮さんの回答を表すと

- (IBAction)myAction1:(id)sender {

[self make_friend_timeline_url2(A,B)];

}

どちらが正解でしょうか。

もうしわございません、もう少し教えてください。

Re:Object-C  初心者な質問

#7

投稿記事 by » 15年前

宣言の仕方によります。
試してみたのでしょうか?

objective-cで引数を使う場合
[self make_friend_timeline_url2(A,B)];

[self make_friend_timeline_url2 XXX:A YYY:B];
みたいな感じかと・・・

Justy

Re:Object-C  初心者な質問

#8

投稿記事 by Justy » 15年前

>どちらが正解でしょうか。
 試してみればわかるはずです。

 ちなみに
[color=#d0d0ff" face="monospace][self make_friend_timeline_url2(A,B)];[/color]
この形式はオブジェクトメソッドの呼び出し、メッセージ式です。

Objective-C 2.0プログラミング言語: オブジェクトメッセージング
http://developer.apple.com/jp/Documenta ... CH11-85945

 めるぽんさんの make_friend_timeline_url2はC関数として実装されていますので……(略)



>このあたりがわかる参考になるサイトとかでも教えていただけると助かります

Apple : Objective-C 2.0プログラミング言語
http://developer.apple.com/jp/Documenta ... mentID_117

Objective-C入門
http://wisdom.sakura.ne.jp/programming/objc/index.html

Cocoaの素、Objective-Cを知ろう - @IT
http://www.atmarkit.co.jp/fcoding/index/objc.html

あたりでしょうか。


 書籍の方は私は

Amazon.co.jp: 詳解 Objective-C 2.0: 荻原 剛志: 本
http://www.amazon.co.jp/dp/4797346809

を持っていますけど、あんまり初心者向けじゃないですよね。

 今 iPhone/Objective-C関連の書籍はたくさん出ていますので、一度大きめの書店にでも行って
自分に合ったものを探してみた方がいいかもしれません。

まる

Re:Object-C  初心者な質問

#9

投稿記事 by まる » 15年前

Justyさんありがとうございました。

理解できました。

閉鎖

“C言語何でも質問掲示板” へ戻る