質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

4065閲覧

@IBAction func funButton(_ sender: UIButton)はsender:Anyと何が違うのか?

NamaKori

総合スコア81

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/19 05:01

関連付けをする時に、typeを変更することができますよね?
その時に、通常時はAnyとなっていると思いますが、Buttonの場合UIButtonを選択できると思います。
そこで質問なのですが、まずtypeを変更することにどのような意味があるのですか?
また、そのtypeのAnyとUI〇〇のそれぞれの意味はどのようなものなのか?
そもそも、senderとは何か?
初心者なので、わかりやすい回答をお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずtypeを変更することにどのような意味があるのですか?

引数で受け取る型をAny型で受けるか、UIButto型で受けるかの違いです。
Any型で受けた場合はそのIBOutletで結んだオブジェクトの型にキャストする必要が有ります。

swift

1// typeをUIButtonにした場合 2@IBAction func pushUIButton(_ sender: UIButton) { 3 // UIButtonのオブジェクトとして使える 4 print(sender.tag) 5} 6 7// typeをAnyにした場合 8@IBAction func pushAnyButton(_ sender: Any) { 9 10 if let sender = sender as? UIButton { 11 // UIButtonのオブジェクトとして使える 12 print(sender.tag) 13 } 14}

typeのAnyとUI〇〇のそれぞれの意味

これはそれぞれAny型UI〇〇型という事です、型名ですね。

senderとは何か?

これは変数名(内部引数名)ですね、この場合はUIButtonの変数です。

投稿2017/02/19 05:15

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NamaKori

2017/02/19 15:35

回答ありがとうございます。 引数で受け取る型をAny型で受けるか、UIButto型で受けるかの違いがあることはわかったのですが、選択した場合それぞれどのような意味があり、どのように使い分けをするのでしょうか?
_Kentarou

2017/02/20 03:45

IBActionで作成したボタンも普通のメソッドの様に呼び出せます、その時に引数がAnyでしたらなんでも渡せるので受け取った側でキャストして使用できます。 ※自分の場合はAnyは使用しないので他の恩恵があるかも知れませんが分かりません。
fuzzball

2017/02/20 03:55

違うUI○○のActionを同じ関数で処理したい場合はAnyで受け取ることになると思います。
_Kentarou

2017/02/20 04:08

fuzzballさん AnyにするとIBActionで他のUI○○のイベントと結べないのですが、、、それができるのでしたら言っていることも分かりますが、自分の手元ではできたこと無いです。
fuzzball

2017/02/20 04:19

Xcode8では出来ないんですね。Xcode7だと出来るのですが。(AnyじゃなくてAnyObjectですけども)
NamaKori

2017/02/20 11:01

Anyを指定したほうが、使い勝手が良いということですか? あと、それぞれの使い分けがあれば教えてください。
_Kentarou

2017/02/20 12:38

> Anyを指定したほうが、使い勝手が良いということですか? それは設計する人によると思います。あなたがどのようにそのIBActionをデザインするかです。 > それぞれの使い分けがあれば教えてください。 使い分けはコメントで書いた通りです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問