import UIKit import Foundation
class ViewController: UIViewController {
var myButton = UIButton() var startTimer_a: NSTimer! // ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ var startTimer_b: NSTimer! // ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ² override func viewDidLoad() { super.viewDidLoad() func puskA() { startTimer_a = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "runMeA",userInfo:nil,repeats: false) //ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° startTimer_b = NSTimer.scheduledTimerWithTimeInterval(10, target: self, selector: "runMeA",userInfo:nil,repeats: true) //ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° } // ΡΠΊΠΎΠ±ΠΊΠ° func puskA puskA() } // ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ viewDidLoad func runMeA() { /******************** Π±Π»ΠΎΠΊ button off ****************************/ // ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠ°Π΄ΡΠ° ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½Ρ self.myButton.frame = CGRectMake(265, 597, 120, 40) // Π±Π»ΠΎΠΊ button = off self.myButton.setTitle("off ", forState: UIControlState.Normal) self.myButton.addTarget(self, action:"runMeG", forControlEvents: UIControlEvents.TouchUpInside) self.myButton.showsTouchWhenHighlighted = true // Π²ΡΠΏΡΡΠΊΠ° ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ self.myButton.setTitleColor(UIColor.redColor(), forState: .Normal) //.Highlighted...red ΡΠ²Π΅Ρ Π½Π°Π΄ΠΏΠΈΡΠΈ self.myButton.layer.cornerRadius = 8 // ΡΠ°Π΄ΠΈΡΡ ΡΠ³Π»ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΊΠΈ self.myButton.backgroundColor = UIColor.cyanColor() // Π·Π°Π»ΠΈΠ²ΠΊΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ self.myButton.layer.borderColor = UIColor.redColor().CGColor self.myButton.titleLabel?.font = UIFont(name: "Helvetica-Bold", size: 18) self.view.addSubview(self.myButton) self.view.bringSubviewToFront(myButton) self.myButton.userInteractionEnabled = true; // true - false } // ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ func runMeAdd /********** Π±Π»ΠΎΠΊ button On *******************/ func runMeG() { // Π·Π°ΠΏΡΡΠΊ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ button = off startTimer_a.invalidate() // Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ°... startTimer_b.invalidate() self.myButton.frame = CGRectMake(265, 597, 120, 40) // Π±Π»ΠΎΠΊ button Π½Π°Π΄ΠΏΠΈΡΡ = On self.myButton.setTitle("On", forState: UIControlState.Normal) self.myButton.addTarget(self, action: "puskA", forControlEvents: UIControlEvents.TouchUpInside) // ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ button ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΏΠΈΡΡ = "On" ΡΠ΅ΡΠ΅Π· action: "puskA" Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΡΡ Π±Π»ΠΎΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ², //ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π±Π°ΡΠΎΠ½Π΅ action "puskA" Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ Π²ΡΠ΄Π°ΡΠ΅ΠΉ ΠΏΠΎ AppDelegate.swift ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ // Thread 1: signal SIGABRT = ? //self.myButton.setTitleColor(UIColor.redColor(), forState: .Normal) // ΡΡΠΈ ΠΊΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠ»ΠΈ //self.myButton.layer.borderColor = UIColor.blackColor().CGColor // ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ // Π·Π½Π°ΡΠ΅Π½ΠΈΡ... //self.myButton.titleLabel?.font = UIFont(name: "Helvetica-Bold", size: 18) //self.view.addSubview(self.myButton) //self.view.bringSubviewToFront(myButton) // ΠΊΠΎΠ½Π΅Ρ Π±Π»ΠΎΠΊΠ° button = off adds // startTimer0014.fire() Π½Π΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ... } // ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ runMeG } // ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ class ViewController: UIViewController // works fine, except for attempts to restart the timer block by pressing the button when the text = "On"
// tried parameters:
// func puskA (firstName: NSTimer = startTimer_a, secondName: NSTimer = startTimer_b)
// puskA (startTimer_a, secondName: startTimer_b) - starting from button ON
// before launching Xcode, the OS does not issue ...
// when run with parameters, when you click a loaf with the caption = ON, it gives OS = Thread1 BAD INSTRACTION
// codes are compiled Xcode 7.2 ON
[enter image description here] [13]
import UIKit import Foundation
class ViewController: UIViewController {
var myButton = UIButton() override func viewDidLoad() { super.viewDidLoad() } // ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ viewDidLoad var startTimer_a: NSTimer! // ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ var startTimer_b: NSTimer! // ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ² func puskA() { startTimer_a = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "runMeA",userInfo:nil,repeats: false) //ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° startTimer_b = NSTimer.scheduledTimerWithTimeInterval(10, target: self, selector: "runMeA",userInfo:nil,repeats: true) //ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° } // ΡΠΊΠΎΠ±ΠΊΠ° func puskA puskA() // Xcode ΡΡΠ΅Π±ΡΠ΅Ρ Expection declaration func runMeA() { /******************** Π±Π»ΠΎΠΊ button off ****************************/ // ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠ°Π΄ΡΠ° ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½Ρ self.myButton.frame = CGRectMake(265, 597, 120, 40) // Π±Π»ΠΎΠΊ button = off self.myButton.setTitle("off ", forState: UIControlState.Normal) self.myButton.addTarget(self, action:"runMeG", forControlEvents: UIControlEvents.TouchUpInside) self.myButton.showsTouchWhenHighlighted = true // Π²ΡΠΏΡΡΠΊΠ° ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ self.myButton.setTitleColor(UIColor.redColor(), forState: .Normal) //.Highlighted...red ΡΠ²Π΅Ρ Π½Π°Π΄ΠΏΠΈΡΠΈ self.myButton.layer.cornerRadius = 8 // ΡΠ°Π΄ΠΈΡΡ ΡΠ³Π»ΠΎΠ² ΠΊΠ½ΠΎΠΏΠΊΠΈ self.myButton.backgroundColor = UIColor.cyanColor() // Π·Π°Π»ΠΈΠ²ΠΊΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ self.myButton.layer.borderColor = UIColor.redColor().CGColor self.myButton.titleLabel?.font = UIFont(name: "Helvetica-Bold", size: 18) self.view.addSubview(self.myButton) self.view.bringSubviewToFront(myButton) self.myButton.userInteractionEnabled = true; // true - false } // ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ func runMeAdd /********** Π±Π»ΠΎΠΊ button On *******************/ func runMeG() { // Π·Π°ΠΏΡΡΠΊ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ button = off startTimer_a.invalidate() // Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ°... startTimer_b.invalidate() self.myButton.frame = CGRectMake(265, 597, 120, 40) // Π±Π»ΠΎΠΊ button Π½Π°Π΄ΠΏΠΈΡΡ = On self.myButton.setTitle("On", forState: UIControlState.Normal) self.myButton.addTarget(self, action: "puskA", forControlEvents: UIControlEvents.TouchUpInside) self.myButton.removeTarget(nil, action: nil, forControlEvents: .AllEvents) // ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ button ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΏΠΈΡΡ = "On" ΡΠ΅ΡΠ΅Π· action: "puskA" Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΡΡ Π±Π»ΠΎΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ², //ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π±Π°ΡΠΎΠ½Π΅ action "puskA" Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ Π²ΡΠ΄Π°ΡΠ΅ΠΉ ΠΏΠΎ AppDelegate.swift ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ // Thread 1: signal SIGABRT = ? //self.myButton.setTitleColor(UIColor.redColor(), forState: .Normal) // ΡΡΠΈ ΠΊΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠ»ΠΈ //self.myButton.layer.borderColor = UIColor.blackColor().CGColor // ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ // Π·Π½Π°ΡΠ΅Π½ΠΈΡ... //self.myButton.titleLabel?.font = UIFont(name: "Helvetica-Bold", size: 18) //self.view.addSubview(self.myButton) //self.view.bringSubviewToFront(myButton) // ΠΊΠΎΠ½Π΅Ρ Π±Π»ΠΎΠΊΠ° button = off adds // startTimer0014.fire() Π½Π΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ... } // ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ runMeG } // ΡΠΊΠΎΠ±ΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ class ViewController: UIViewController
button.removeTarget(nil, action: nil, forControlEvents: .AllEvents)In order for the actionbutton.removeTarget(nil, action: nil, forControlEvents: .AllEvents)the button not to accumulate, so it turns out several times the methods will start to twitch. More without a stack errors can not tell - markov