AFNetworking in ARC gives compiler warnings after adding -fno-obc-arc - automatic-ref-counting

I have an ARC project and I'm trying to add AFNetworking to it. In the Build Phases for the target, I marked all the AFNetworking files with the "-fno-objc-arc" flag. But I'm still getting quite a few compiler warnings, such as "Method possibly missing a [super dealloc] call", and "No 'assign', 'copy' or 'retain' attribute specified, assign assumed", which is sometimes followed by "Default property attribute 'assign' not appropriate for non-gc object".
All the examples about AFNetworking that I've seen, say that if I set the compiler flag, the files should compile without errors or warnings. What am I missing?

It seems AFNetworking now compiles with ARC, so no -fno-objc-arc flag is required. In non-ARC-projects you need to mark AFNetworking files with -fobjc-arc.
AFNetworking also dropped iOS 4 support in a recent commit.

Related

MSBuild ignores AndroidVersionCode

As the doc stands, one can define -p:AndroidVersionCode=101 as one of MSBuild arguments.
However, the Android Version Code is ignored and the final APK file always contains only the value from AndroidManifest.xml even though the <GenerateApplicationManifest>true</GenerateApplicationManifest> is defined in the *Droid.csproj file (in fact, I've set it also in netstandard csfile).
How to define Version Code for MSBuild?
Here is the complete MSBuild command which I use:
msbuild -t:Clean -t:PackageForAndroid -p:AndroidPackageFormat=apk -p:ApplicationVersion="1.0" -p:AndroidVersionCode=101 -p:ApplicationId="cz.sebastian.myapp" -p:OutputPath="C:\Packages\" -p:Configuration=Release .\MyApp.Droid.csproj
After several practical experiments I've found the following:
Docs are wrong. The property AndroidVersionCode doesn't reflect Android's Version Code, in fact, I didn't find what it's really used for. Version Code can be modified via the ApplicationVersion property, only.
To really change the Version Code one must remove the android:versionCode from AndroidManifest.xml.
To sum up: Remove android:versionCode from Android manifest and use ApplicationVersion with an integer value.
MSBuild version 17.4.0+18d5aef85 for .NET Framework

How to view decompiled R code in order to debug it?

I'm working with ASSIGN SESSION:DEBUG-ALERT = TRUE. and as a result, while testing a program I get an error message with following callstack details (only the first line):
--> USER-INTERFACE-TRIGGER my_own_window.w at line 587 (\\<official_build_server_directory>\my_own_window.r)
my_own_window.w at line 709 (\\<official_build_server>\<my_own_window.r)
...
As you can see, something's wrong with my window at lines 587 and 709, but:
While compiling the window files, some things happen which mess with the line numbers, and the mentioned line numbers are the ones from the compiled *.r files, which are different than the ones from the original *.w files.
In order to be sure about the line numbers, I would need a de-compiler, or at least a *.r-viewer (being based on an internal de-compiler).
It's not the r-code's you need to look into. It's the DEBUG-LISTING files. If you have the source-code execute:
COMPILE my_own_window.w DEBUG-LIST c:\temp\my-own_window.debuglist .
That file shows you the actual line numbers.
For future reference: so far Progress has not provided a decompiler. Any available decompilers at the time of writing this are 3rd party and also possibly not legal regarding Progress OpenEdge licenses.
You can also click on the 'Debug' button in that alert box, which will invoke the debugger which steps through an 'on the fly' debug-listing.
For the debug-listing on the fly to work, you will need to have the source files in your propath. The debugger will detect and complain if source files have changed after your code was executed.
And you will also need to ensure the debugger is enabled by starting proenv and then prodebugenable -enable-all

sqlite3_key missing from header in iOS 11 framework [duplicate]

I am working on SQLite File Encryption. I have added sqlCipher & crypto frameworks successfully in my project.
Now when I try to compile my application on this line
int rc = sqlite3_key(database, [key UTF8String], strlen([key UTF8String]));
it says Implicit declaration of function 'sqlite3_key'
So above line "implicit declaration" sounds to me like function is defined but not declared. But where I have to declared ?
While searching over Internet, under this article, it says like SQLite Encryption Extension(SEE) is not available publically. I have to purchase it of cost around $2000.
SEE -> http://www.hwaci.com/sw/sqlite/see.html
So this is the only reason I am getting Implicit declaration & False response while sqlite encryption process ?
If you are using SQLCipher, you need to define SQLITE_HAS_CODEC in your application's C Flags. Thats all.
Yes, that is the reason you are getting that compiler warning. The function sqlite3_key() is not defined in the version of libsqlite3 included with iOS. Adding in a function declaration isn't going to help-- it would fix that compiler warning, but it would just mean you'll get a linker error since the function isn't defined anywhere.
If you purchased SEE you could probably build your own copy of SQLite, embed it in your app, and just not use the system's libsqlite3. That this would mean you'd have to say "yes" when the app store submission process asks if your app includes encryption, meaning extra paperwork and time before you could submit the app. I'm not certain whether there's any clear indication of whether Apple would accept it even then-- probably they would, but they've been known to surprise people.

How to see more information from Xcode linker?

When I try to compile this project I get the following error.
I would like to find out more about this error. It says to pass -v to see more information.
How can I do that?
And how can I remove this library from the linker?
Also, and this is an aside question, but does this count as a compiler error, or is it just a link error?
To make your user experience more intuitive, Apple likes to make buttons invisible.
You can click on lines in the build log to make these buttons visible...
To make this interface even more obtuse er... I mean, more intuitive, some lines in the build log have these buttons already showing without needing to be clicked first.
It says, that the linker failed. The previous line is the linker's error message:
ld: library not found for -lPods.
To remove the dependency on the library, go to project’s “Build Settings” tab and remove -lPods from the key named “Other Linker Flags”. Or, if it's not there, open the “Build Phases” tab and look for it in the list named “Link Binary With Libraries”.
It’s a linker, not compiler error.

Xcode 4 disable "fix-it" popup

I'm fine with Xcode 4 telling me that I have an error. But that pop-up pretty much always has the wrong solution. Is there any way I can get rid of it permanently?
From what I've seen, it looks like you may need to disable the various types of warnings one by one. A list is found here:
http://developer.apple.com/library/mac/#documentation/DeveloperTools/gcc-4.0.1/gcc/Warning-Options.html#Warning-Options
To change them:
Bring up the project navigator and choose your project. In the main window that appears, choose "All". Under the section "LLVM compiler 2.0 - Warnings", choose "Other Warning Flags". Add the flag "Wno-idiomatic-parentheses" for both "Debug" and "Release." Now clean and recompile ( from if(self = [super init]) - LLVM warning! How are you dealing with it?)
I noted in the apple dev link that the following option should inhibit all warnings:
-w Inhibit all warning messages.

Resources