views:

479

answers:

3

I'm being rejected on the App Store for using private instance variables in my app. The ivars I am supposedly using are most definitely not being accessed in my code, but I am using one or two static libs from third parties. How would I test whether these could actually be the offenders?

Update:

Apple is accusing me (and 3rd party libs) of using private instance variables in the UITouch class, including

  • _locationInWindow
  • _tapCount
  • _previousLocationInWindow
  • _timestamp
  • _touchFlags
  • _phase
  • _window
+1  A: 

I am using one or two static libs from third parties

Contact the third parties, requesting explanation, they wrote the code, they must know what's in there. They might have a forum or a comments section, where other users might have expressed these concerns already, and you can look for answers and alternatives.

luvieere
I've done both, the vendor denies using the private APIs and I haven't found any similar complaints, but I'd still like to know for sure
nduplessis
+3  A: 

You can use nm to scan for which library uses the ivar in question.

% nm static_lib.a | grep name_of_ivar

If you get a line, I think with a capital U, with the name of the ivar you probably have a suspect.

epatel
Exactly the stuff I'm looking for, will give it a bash. Thanks
nduplessis
OK so I ran nm -a static_lib.a and it does not look like it's showing any message calls to the UIKit classes, it only shows something like this: U .objc_class_name_NSCharacterSet
nduplessis
I read your update. Those vars can be accessed in a straight struct way, making them being offsets known by the compilers...so I think you should focus on which parts uses UITouch stuff. ie, who uses/defines touchesBegin:/touchesMove:/touchesEnd:
epatel
+8  A: 

I don't know anything about detecting the problem, but we encountered this problem recently; in our case it was caused by the Three20 library. If you are using it, see http://groups.google.com/group/three20/browse%5Fthread/thread/c442af6e39a918b0/2375e7a158ee9d1b for a discussion/possible solutions.

zenzelezz
I am indeed using Three20, looks like this will solve my issue. Thanks a bunch
nduplessis