dispatch_once Error when running FacebookSDK - xcode

I don't know whats wrong, I installed FacebookSDK using Cocoapods (as always), and I am getting an error in this method:
_dispatch_once(dispatch_once_t *predicate, dispatch_block_t block)
{
if (DISPATCH_EXPECT(*predicate, ~0l) != ~0l) {
dispatch_once(predicate, block);
}
}
The red line of the error is on the line dispatch_once (predicate, block); . I am not doing anything different than other times using FacebookSDK.
Can anyone help?

Configure your info.plist (find it in the Supporting Files folder in your Xcode Project).
Right-click your .plist file and choose "Open As Source Code".
Copy & Paste the XML snippet into the body of your file (inside of the <dict>...</dict>):
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>FB + AP-ID</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string> AP-ID </string>
<key>FacebookDisplayName</key>
<string>App-Name</string>
If you use any of the Facebook dialogs (e.g., Login, Share, App Invites, etc.) that can perform an app switch to Facebook apps, your application's .plist also need to handle this.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Source: Facebook SDK Documentation

My app kept crashing and producing the error message:
'The service configuration is `nil`
on the same line:
dispatch_once(predicate, block);
while trying to implement AWS Auth via the Mobile Hub into my iOS app.
I spent a lot of hours editing my info.plist, googling solutions, and re-downloading the awsconfiguration.json file only to discover that my "Target Membership" box in the right side bar of Xcode was unchecked. Once I checked it my app successfully built with AWS Auth working fine.
Hope this helps someone.

So I had the same issue, and fixed it by reinstalling all of my pod files by removing from Podfile, running "pod update" and then readding them and running "pod update" again. Worked like a charm.

Related

Undefined dictionary in Info.plist

Sep 4 18:26:17 MacBook-Pro-77 com.apple.dt.Xcode[315] :
installApplication:withOptions:error:: Error
Domain=IXUserPresentableErrorDomain Code=1 "This app could not be
installed at this time." UserInfo={NSLocalizedDescription=This app
could not be installed at this time., NSUnderlyingError=0x7fd558a69980
{Error Domain=MIInstallerErrorDomain Code=39 "Appex bundle at
/Users/mrinmaykalita/Library/Developer/CoreSimulator/Devices/4E1C6B5B-2711-47ED-B8B6-27DA419E4609/data/Library/Caches/com.apple.mobile.installd.staging/temp.9nyJrs/extracted/Beam.app/Watch/Beam
Watch.app/PlugIns/Beam Watch Extension.appex with id
com.bpl.Beam.watchkitapp.watchkitextension does not define an
NSExtension dictionary in its Info.plist"
UserInfo={LegacyErrorString=AppexBundleMissingNSExtensionDict,
FunctionName=-[MIPluginKitPluginBundle overlaidInfoPlistWithError:],
SourceFileLine=213, NSLocalizedDescription=Appex bundle at
/Users/mrinmaykalita/Library/Developer/CoreSimulator/Devices/4E1C6B5B-2711-47ED-B8B6-27DA419E4609/data/Library/Caches/com.apple.mobile.installd.staging/temp.9nyJrs/extracted/Beam.app/Watch/Beam
Watch.app/PlugIns/Beam Watch Extension.appex with id
com.bpl.Beam.watchkitapp.watchkitextension does not define an
NSExtension dictionary in its Info.plist}}}
In the above output from CoreSimlutor.log; why is com.apple.mobile.installd.staging referred to when that folder does not exist or get created in running.
Any quick workouts kindly please?
I checked that the key exists in Info.plist for
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>WKAppBundleIdentifier</key>
<string>com.bpl.Beam.watchkitapp</string>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.watchkit</string>
</dict>
Thanks
I had this problem after changing location of Info.plist file for app/WatchKit extension or WatchKit app. Other reason may be just renamed folder for WatchKit app or extension.
You have to clean all targets including main application, extensions and WatchKit app. I had to perform clean using Cmd+Shift+K for each target once changing targets in drop down in Xcode one after another.

how to make a finder sync extension load automatically?

i create a cocoa application project, and add target "Finder sync extension". Then the "finderSync.appex" will be put to ".../Contens/Plugins/" folder. But when i launch the application, the extension is not loaded automatically, should i load it manually ? How can i load it ?
From the Apple developement guide, it says:
For OS X to recognize and automatically load the Finder Sync extension, the extension target’s info.plist file must contain the following entries:
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict/>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.FinderSync</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).FinderSync</string>
</dict>
I already set as the above, but it doens't work.
You need to register your extension with Finder:
pluginkit -a <path you your appex>
You might also need to tell Finder to enable your extension:
pluginkit -e use -i <ID of you appex>

Why I can't Cmd-Tab to my application window on Mac OS X 10.9 after upgrading to XULRunner 33?

I have a standalone XULRunner application that was previously running XULRunner 1.9.2 (old, I know). I just upgraded to XULRunner 33.
Previously, When I was developing locally (MacBook Pro with Mac OS X 10.9.5), I would often Cmd+Tab between my IDE and my application.
After the upgrade, I can no longer do this. I still get a window on my desktop (as defined in main.xul), but it no longer appears in my Cmd+Tab list. I have to "find" it on the desktop.
Closing the window quits the application, etc., and the fact that I'm getting an application window at all implies that my main.xul is correct... but I don't know why this is.
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://my-app-name/skin/css/main.css" type="text/css"?>
<!DOCTYPE window SYSTEM "chrome://my-app-name/locale/main.dtd">
<window id="main" title="&window-title;" width="750" height="530" persist="width,height,screenX,screenY,sizemode" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script><!-- MY APPLICATION CODE HERE --></script>
<keyset>
<key modifiers="accel" key="W" oncommand="window.close()"/>
<key modifiers="accel" key="Q" id="quit"/>
</keyset>
<toolbox>
<menubar>
<menu id="menu_file" label="File" hidden="true">
<menupopup>
<menuitem id="menu_FileQuitItem" key="quit" label="Quit" oncommand="goQuitApplication();"/>
</menupopup>
</menu>
</menubar>
</toolbox>
</window>
I've read through the Windows and menus in XULRunner tutorial:
The same code on XULRunner 1.9.2 runs fine and I can "activate" the window. With the new XULRunner, the window title appears greyed out in Mac OS X and is not selectable.
Any ideas of what to try?
I don't know if it's helpful, but I also used to get a menu bar in OS X as well, when the window was selected. Even now if I click on the window's title bar, the menu bar that OS X displays does not show my application's menu.
I don't know what was changed, or when they changed it, but this behavior is somewhat documented on MDN.
Excerpt from Getting started with XULRunner:
On the Mac, before you can run a XULRunner application with everything intact, you must install it using the --install-app xulrunner commandline flag. Installing the application creates an OS X application bundle:
The page goes on with some steps for how to do this, but I was never able to get them to work with modern XULRunner versions.
The only way I was ever able to get modern XULRunner versions to fully work is to create the application bundle manually.
In this example, I am going to use the "hello world" example referenced in the MDN docs.
Step 1:
Create the following directory structure.
hello.app/
Contents/
MacOS/
Resources/
Step 2:
Download the version of XULRunner runtime you want (I'm using 33), and extract the XUL.framework.
Step 3:
Copy all of the files inside XUL.framework/Versions/Current/ to hello.app/Contents/MacOS/.
Also copy the dependentlibs.list into hello.app/Contents/Resources/
Step 4:
Download the example files, and copy the following files and directories to hello.app/Contents/Resources/.
chrome/
defaults/
application.ini
chrome.manifest
Step 5:
Due to another issue, the xulrunner binary will not automatically find the application.ini like it's supposed to. To work around this, we will need a stub loader, like this one I wrote previously.
#!/bin/sh
runpath="`dirname "$0"`"
contentsdir="`cd "$runpath"/.. > /dev/null && pwd`"
exec "$runpath/xulrunner" --app "$contentsdir/Resources/application.ini"
Create a new file named hello at hello.app/Contents/MacOS/hello, put the code above inside, and give it executable permissions (chmod +x hello).
Step 6:
Now we need a Info.plist file. Here is one I created based on the Deploying XULRunner example. Note that the CFBundleExecutable must match the stub loader file name above.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>hello</string>
<key>CFBundleGetInfoString</key>
<string>1.0</string>
<key>CFBundleIconFile</key>
<string>app_icon.icns</string>
<key>CFBundleIdentifier</key>
<string>net.yourcompany.yourapplication</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>applicationName</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
</dict>
</plist>
Save this file under hello.app/Info.plist.
Step 7:
Create a new file named PkgInfo at hello.app/PkgInfo, and put this text inside.
APPL????
Step 8:
You should now be able to run your application with and menu and doc icon, and Cmd + Tab capabilities. You can open it by Finder, or the command line.
$ ./hello.app/Contents/MacOS/hello

SublimeText encloses lines in white rectangles

It's rather annoying and I can't seem to figure out why.
If you still have a problem with those solutions suggested above (with anaconda lint):
Disable linting altogether within the user-defined Anaconda settings file, Anaconda.sublime-settings, via the file menu:
Sublime > Preferences > Package Settings > Anaconda > Settings – User:
When it opens file, just type the following and save it away ;-)
{"anaconda_linting": false}
At least, it fixed my problem.
Blessings
(a debtor)<><
Looks like you have SublimeLinter installed. It highlights errors and warnings.
Disabling Annaconda linting in sublimetext 3 for current file:
Enter command palette by Cntrl + Shift + P or Command + shift + P for Mac OS X
Type Anaconda: Disable linting on this file and hit enter
To re-enable linting Anaconda: Enable linting on this file
Disabling linting persists between sessions.
Source
You probably can change "anaconda_linter_mark_style" to "none" and keep "anaconda_linter_underlines" as true. This way it'll only put a underscore under errors but not highlight the whole line.
If you don't want to disable SublimeLinter completely, you can set Syntax Specific Preferences.
Preferences -> Package Settings -> Sublime Linter -> Settings Syntax Specific User
The preferences is evaluated similar to CSS, it cascades. Think about the most user-specific, syntax-specific rules evaluated last.
E.g: I also do not like the white rectangle, so I opted for fills.
{
/*
Selects the way the lines with errors or warnings are marked; "outline"
(default) draws outline boxes around the lines, "fill" fills the lines
with the outline color, and "none" disables all outline styles
(useful if "sublimelinter_gutter_marks" is set).
*/
"sublimelinter_mark_style" : "fill",
/*
If true, lines with errors or warnings will be filled in with the
outline color.
This setting is DEPRECATED and will be ignored in future
versions. Use "sublimelinter_mark_style" instead. For backwards
compatibility reasons, this setting overrides "sublimelinter_mark_style"
if that one is set to "outline", but has no effect if it's set to "none".
*/
"sublimelinter_fill_outlines": false,
// If true, lines with errors or warnings will have a gutter mark.
"sublimelinter_gutter_marks": false,
// If true, the find next/previous error commands will wrap.
"sublimelinter_wrap_find": false,
}
For Anaconda/Sublime Users
I have Anaconda and the lint function is useful, but out of the box, it is draconian about style. When you hover over the rectangle, it will tell you the number of the rule it is enforcing. You can disable the ones that you feel are unneeded or get in the way as you code.
On Macs:
Go to Preferences | Browse Packages | Anaconda | Anaconda.sublime-settings
Search for "pep8_ignore"
Add the rules you want to remove.
I've put in my list the following rules that remove some of the white space rules that slow me down but keeps the "no tabs" rule.
"E201",
"E202",
"E203",
"E302",
"E309",
"W291",
"W293",
"W391"
You'll want to set "translate_tabs_to_spaces": true in your user settings if you go with this list.
Alternatively you can set "pep8" to false to stop it entirely.
If you are using Anaconda plugin (for Python development) this is it's linting functionality - it highlights Python syntax errors and PEP8 violations.
You can disable this feature completely or change the color of this outline by adding some custom rules to your current SublimeText theme:
In Sublime Text menu: Preferences > Browser Packages...
Locate source file of your current theme in opened directory (*.twTheme file with the name corresponding to the one, selected in Preferences > Color Scheme > ...)
Duplicate this file, add another name (for example Tomorrow-my.tmTheme from Tomorrow.tmTheme)
Paste the following code to this newly created theme file, right before </array> tag:
<dict>
<key>name</key>
<string>anaconda Error Outline</string>
<key>scope</key>
<string>anaconda.outline.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FF4A52</string>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>anaconda Error Underline</string>
<key>scope</key>
<string>anaconda.underline.illegal</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FF0000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>anaconda Warning Outline</string>
<key>scope</key>
<string>anaconda.outline.warning</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#DF9400</string>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>anaconda Warning Underline</string>
<key>scope</key>
<string>anaconda.underline.warning</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FF0000</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>anaconda Violation Outline</string>
<key>scope</key>
<string>anaconda.outline.violation</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#ffffff33</string>
<key>foreground</key>
<string>#FFFFFF</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>anaconda Violation Underline</string>
<key>scope</key>
<string>anaconda.underline.violation</string>
<key>settings</key>
<dict>
<key>background</key>
<string>#FF0000</string>
</dict>
</dict>
Adjust the colors to your needs. Save file.
Select your "new" theme in Preferences > Color Scheme > and observe the changes.
Point 3. was needed in my case because color wasn't updated immediately, after just saving theme and restarting Sublime/switching themes (sublime uses some kind of buffer?..). So, maybe you will have to repeat steps 3-6, when you want to play a little with the colors.
Source: Anaconda's Docs
On line 300 "anaconda_linter_mark_style": "none", in Preferences -> Package Settings -> Anaconda -> Settings - Default. This removes the "annoying" highlighting but still checks for pep8 errors
If none of the previous solutions worked for you, try this:
Go to Preferences | Package Settings | Pylinter | User settings
In the file, just add/modify the following lines:
"run_on_save": false,
"disable_outline": true
It worked for me, and in my case I had anaconda only as a folder, associating the python compiler of Sublime to the python compiler (python.exe) present in the anaconda folder.
I just found that this can also randomly happen on the last word that you searched. So if you searched for "integer" for instance. Then all instances of "integer" will have that white square around them.
In Anaconda with Sublime Text, if you don't want to make any changes to the settings:
In the case highlighting occurs, you can use a keyboard shortcut (in my case it's CTRL-ALT-R) to autoformat the code! The highlighting will be gone immediately.
You just have to repeat that every once in a while, after having added new code (which is not formatted according to the PEP8 rules).
The command is "anaconda_auto_format".
if you got the anaconda linting
go in the dir like this C:\Users\giova\AppData\Roaming\Sublime Text 3\Packages\Anaconda
and change the anaconda.sublime-settings (find the anaconda linter keys and set them to false). See if you installed other linter stuff and change their settings to false where it seems to rely on linting until everythings is right for you. I had installed different linters, so I had to change all of them.
you can disable warnings in anaconda.sublime-settings
via the file menu:
Sublime > Preferences > Package Settings > Anaconda > Settings – User:
In opened file type following code and press Ctrl + S to save file
{"pep8": false}
you can also type this:
{"anaconda_linting": false}
but it disables both warnings and errors, which is not good
For me, on sublime 3 this was the PyLinter Package. While the linting feature's useful i also wanted to get rid of the annoying highlight. Found this on their docs if it's helpful! :)
https://packagecontrol.io/packages/Pylinter
I was able to remove the highlight with Command + option + x
The plugin can be invoked by a keyboard shortcut:
OS X: Command+option+z
Linux, Windows: Control+Alt+z
**Toggle Marking**
The marking of the errors in the file can be toggled off and on:
OS X: Command+option+x
Linux, Windows: Control+Alt+x

Anyone had success with Copy Files build phases in Xcode 4 templates

I've been trying to add a Copy Files build phase to a project template for Xcode 4 but I cannot figure out how to add files to copy.
Here's what I've added to my target. Changes to DstPath, DstSubfolderSpec and RunOnlyForDeploymentPostprocessing are all reflected in projects created from the template. But no files. I have tried adding an array using keys named Files, Definitions, Nodes, nothing has any affect.
Any thoughts or ideas would be greatly appreciated!
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>CopyFiles</string>
<key>DstPath</key>
<string></string>
<key>DstSubfolderSpec</key>
<string>10</string>
<key>RunOnlyForDeploymentPostprocessing</key>
<string>NO</string>
</dict>
</array>
I found a little gem hidden in some weird python script that gave a "better" (as opposed to nothing) explanation of the mysterious DstSubfolderSpec…
# dstSubfolderSpec property value used in a PBXCopyFilesBuildPhase object.
'BUILT_PRODUCTS_DIR': 16, # Products Directory
: 1, # Wrapper
: 6, # Executables: 6
: 7, # Resources
: 15, # Java Resources
: 10, # Frameworks
: 11, # Shared Frameworks
: 12, # Shared Support
: 13, # PlugIns
There's actually quite a bit of interesting info in the script, (apparently it's part of pythonwebkit, or something).. but regardless, I posted a gist of it here if you want to try and glean any other useful tidbits.
So far I have this working:
<dict>
<key>Class</key>
<string>CopyFiles</string>
<key>DstPath</key>
<string>www</string>
<key>DstSubfolderSpec</key>
<string>7</string>
This creates a CopyFiles build phase that copies files to the folder "www" inside of Resources. (This would result in those files living under /www in the app bundle.) However, I haven't yet been able to specify which files get copied. This is similar to this question
I don't know the answer but this may be a workaround. It runs a script with each build.
<key>Targets</key>
<array>
<dict>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>ShellScript</string>
<key>ShellPath</key>
<string>/bin/sh</string>
<key>ShellScript</key>
<string>~/hello.sh</string>
</dict>
Note that the path to the script is absolute. Maybe you can define a path with PathType Group to set it relative to a group inside the project (I didn't try).
DstPath is the destination path of the files to copy (I guess). I don't know what DstSubfolderSpec is, it only appears in the Command Line Tool with a value of 0. I guess you don't know it either.

Resources