0

I tried How do I prompt the user for push notification permission after a button is pushed? and it didn't work.

Because the code from How do I prompt the user for push notification permission after a button is pushed? didn't work, I deleted it. The app should have gone back to normal, right?

Instead, I can't even run it anymore. After I clicked a button within Simulator, Xcode showed this error:

    2017-04-30 21:02:21.528 GradientAlarm[63166:7174122] 
    [GradientAlarm.ViewController allowNotifAction:]: unrecognized selector 
    sent to instance 0x7a0420b0
    2017-04-30 21:02:21.535 GradientAlarm[63166:7174122] *** Terminating app 
    due to uncaught exception 'NSInvalidArgumentException', reason: '-
    [GradientAlarm.ViewController allowNotifAction:]: unrecognized selector 
    sent to instance 0x7a0420b0'
    *** First throw call stack:
    (
    0   CoreFoundation                      0x030b3ded __exceptionPreprocess + 
    189
    1   libobjc.A.dylib                     0x0065cd6f objc_exception_throw + 
    49
    2   CoreFoundation                      0x031255b8 -[NSObject(NSObject) 
    doesNotRecognizeSelector:] + 136
    3   CoreFoundation                      0x03039a8d ___forwarding___ + 941
    4   CoreFoundation                      0x030396be _CF_forwarding_prep_0 + 
    14
    5   libobjc.A.dylib                     0x00672220 -[NSObject 
    performSelector:withObject:withObject:] + 63
    6   UIKit                               0x00ad3d90 -[UIApplication 
    sendAction:to:from:forEvent:] + 91
    7   UIKit                               0x00ad3d2a -[UIApplication 
    sendAction:toTarget:fromSender:forEvent:] + 41
    8   UIKit                               0x00c7bd0b -[UIControl 
    sendAction:to:forEvent:] + 64
    9   UIKit                               0x00c7c075 -[UIControl 
    _sendActionsForEvents:withEvent:] + 469
    10  UIKit                               0x00c7afab -[UIControl 
    touchesEnded:withEvent:] + 666
    11  UIKit                               0x00b4a2ca -[UIWindow 
    _sendTouchesForEvent:] + 3066
    12  UIKit                               0x00b4bb8e -[UIWindow sendEvent:] 
    + 4445
    13  UIKit                               0x00af1fe0 -[UIApplication 
    sendEvent:] + 363
    14  UIKit                               0x0136e16f 
    __dispatchPreprocessedEventFromEventQueue + 2973
    15  UIKit                               0x0136563f __handleEventQueue + 
    1255
    16  UIKit                               0x01366ba3 
    __handleHIDEventFetcherDrain + 66
    17  CoreFoundation                      0x03058a5f 
    __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
   18  CoreFoundation                      0x0303e1c4 __CFRunLoopDoSources0 + 
   500
   19  CoreFoundation                      0x0303d69c __CFRunLoopRun + 1084
   20  CoreFoundation                      0x0303cfd4 CFRunLoopRunSpecific + 
   372
   21  CoreFoundation                      0x0303ce4b CFRunLoopRunInMode + 123
   22  GraphicsServices                    0x04d58a7a GSEventRunModal + 71
   23  GraphicsServices                    0x04d5895f GSEventRun + 80
   24  UIKit                               0x00ad1cb9 UIApplicationMain + 148
25  GradientAlarm                       0x0008cbab main + 75
26  libdyld.dylib                       0x03f16779 start + 1)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

I don't know why this happened. I deleted the information that I had added and opened a new project from which I copy and pasted all of the defaults, but I still have the same error message.

jfjldsfjljfkls
  • 81
  • 1
  • 1
  • 5
  • Was the function the selector pointing to deleted because that's what its saying – shearos May 01 '17 at 01:17
  • Try to remove and reconnect that button `IBAction` function. – Rajamohan S May 01 '17 at 01:27
  • Sorry, but being critical, your title is rather inaccurate. It obviously didn't break "because of a button". When you figure out what happened, consider changing the title to reflect it. Having said that, one thought - did you name your project something different? Is it Xcode's (or the Simulator's) derived data? –  May 01 '17 at 02:48
  • @shearos are you saying that the function which used to run when that button was pressed has been deleted? That is true, but that function was causing problems so putting it back wouldn't be very useful either. I just wanted to go back to the time before I had added that function. On top of that, I copy and pasted the main storyboard to a completely new Xcode project in which I have not added ANY code, and I got the same error. I never wrote that function in this project, so in this project that function was never deleted. – jfjldsfjljfkls May 02 '17 at 02:30
  • @RAJAMOHAN-S When I tried to do that, Xcode sort of froze. It wouldn't let me edit the code in the view controller, but would let me edit code in other places. – jfjldsfjljfkls May 02 '17 at 02:35
  • @jfjlds , make sure you are in swift class and not in class interface on right side. – Rajamohan S May 02 '17 at 02:39
  • @RAJAMOHAN-S I figured it out! Thanks. – jfjldsfjljfkls May 02 '17 at 05:02
  • @jfjldsfjljfkls, you are welcome :) – Rajamohan S May 02 '17 at 05:04

2 Answers2

1

You probably still have the reference to allowNotifAction: in .xib or storyboard view controller.

Go to the interface builder (.xib or storyboard) select the view controller and make sure that there is no reference to the method.

dmlebron
  • 861
  • 6
  • 16
  • I copy and pasted the main storyboard to a completely new Xcode project in which I had not altered any code, and I got the same error. (I just wanted to see if the button would work again before adding any code.) In that new project, whose code I haven't even touched, I'm quite certain there's no reference to allowNotifAction anywhere. When I look at whatever code is present in the new project, it's just all the defaults. – jfjldsfjljfkls May 02 '17 at 02:40
  • do you assign `allowNotifAction` as selector in your code `#selector()`? – dmlebron May 02 '17 at 13:43
  • that wasn't the issue. I answered my question 15 hours ago, but thank you for responding and helping! – jfjldsfjljfkls May 02 '17 at 20:53
  • So my answer was the real solution then... You should marked question as solved – dmlebron May 02 '17 at 21:04
0

The answer to this question is quite simple. The console's error message wasn't very helpful, but I was looking around and realized I had linked the same button to the View Controller twice, and that even after I deleted the corresponding programming block in the View Controller, the button was still linked to something. I just had to right click the button in the storyboard and delete that.

Silly mistake. Thanks everyone for responding!

jfjldsfjljfkls
  • 81
  • 1
  • 1
  • 5
  • credit to @dava for this solution! I'm simply marking my answer as the correct one because I didn't understand dava's answer (as the extreme beginner that I am) and I want anyone who looks up this question in the future to find the most plain language, simplified explanation possible. Thanks to everyone who answered. – jfjldsfjljfkls May 05 '17 at 12:55